老师好,我目前只看到章节7-6,看了老师介绍的notify和notifyAll得知这两种方法都无法唤醒特定的线程。所以我想问问,就没有任何方式唤醒特定的线程吗。
提出这个问题,源于我自己思考的两个实例。想咨询一下老师对于解决这两个实例的方法和思路。
第一个实例是关于老师对于生产者和消费的改编版。这里假设有一个生产者和多个消费者,假设生产者生产出一批产品后,就需要notifyAll唤醒所有消费者,然后自己休眠。每个消费者被唤醒后就领取一个产品就进行休眠,只有当所有消费者都各自领取到一个产品之后,才会唤醒生产者进行产品的再生产。
另外一个是我在使用java web编程时考虑的一个问题。假设有一个Java类来监测数据库的更新,当数据更新一次之后就会通知servlet里面的一个线程,然后获取更新的数据展示在页面上。假如只打开一个网页,这里刚好就和老师讲的两个线程轮换打出奇偶数一样,java类线程监测数据更新通知servlet进行数据更新循环往复,比较简单。但是当打开多个网页的时候,实际就会变成一个检测数据库更新的线程1,和多个servlet里面的线程组2,需要线程组1和线程组2进行轮换工作。
所以,从这两个实例中总结出来我想问的问题:假设有n组线程组,每个线程组里面的线程个数不定,只有当一个线程组里面所有的线程都运行过之后,才会让出资源让另外的一个线程组进行工作。情况如下图:
希望能够得到老师的解答!