之前所有的例子中,线程的执行都具有一定的随机性。如果希望线程能够有序的执行,必须使用线程通信技术。Java语言提供了一些线程通信的机制能够保证线程的有序执行,本小节将详细讲解线程通信技术。
14.6.1传统的线程通信
假如有两个线程,它们分别代表生产者和消费者。当生产者生产了一个产品时,消费者才能取走这个产品,而当消费者没有取走产品时,生产者不能再次生产产品。不难看出:这两个线程必须交替执行才能保证生产者不会重复生产对象以及消费者不能连续两次取走产品。实现这种线程交替执行的模式必须使用线程通信技术完成。
为实现线程通信,Java语言定义了三个方法:分别是wait()、notify()和notifyAll(),下面的表14-2展示了这三个方法的作用。
表14-2线程通信的方法
方法 | 功能 |