这里讲线程间的通讯机制。
线程间的通讯就以下几个方法:wait() 使当前线程进入指定对象的等待池。notify()从指定对象等待池中唤醒一个等待线程。notifyAll()从指定对象等待池中唤醒全部线程。
具体的demo见下图:
①首先我们创建了一个共享数据,数据里面有增加数据和减少数据两个方法,数据每增加5个就唤醒所有线程。
②创建两个类,分别生产和消费我们上面提供的数据
③我们创建线程,开始调度。
④结果如下图:
这里的数据并不是我们所理想的5 0 5 0 的数据,因为线程调度的问题,即使唤醒了我们需要的线程,而操作系统没有调度到我们需要的线程,而我们的Producer仍然会继续添加。所以这里我们不关注数据的准确性,只是单纯实现线程间的通信。
Over !