目前遇到这么一个场景:假设有线程A,B,C,D。线程A相当于生产者。线程B,C从线程A中获得产品,经过自己的处理后再由D获取。有几个限制条件,A生产一个产品的前提条件是B,C已经从A中获取了之前的一个产品。B,C从A中获取产品的条件是D已经将B,C中已经处理完的结果获取完。上面废话了一大推,没耐心看也无所谓,我主要想问的是下面这个问题:当一个线程中的run()方法中有while(true){}循环的话,当在,在while循环内并没有写sleep,wait等挂起操作。这样,当跑了这个线程的话,就把1个CPU核使用率占满了。这种情况很恐怖哎,我的线程要监控另外一个线程的状况,就必须得要用while(true)来获取另一线程的状况啊。这么一来CPU启不是就希望大家给我一个好的方法,用于线程对线程监控这种情况。
方法2:用并发的数据结构如:ConcurrentLinkedQueue之类的。也是不用考虑烦恼的同步与互斥的问题
方法3:自己用wait()/notifyAll()写同步与互斥结构。
监听的线程做server监听,这样的话,等有信息发过来才会处理
而不会一直在while true里占用cpu那样无限循环