多线程问题 比如说有两类线程A、B、C和a b c分别占有两个队列那两个队列可以看作临界资源如果a线程调用notifyAll()能唤醒ABC的线程吗肯定能唤醒bc两个线程那A、B、C呢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 notifyAll()方法是唤醒所有wait()的线程的意思,让他们重新获得资源,进入就绪状态,排队等待时间片的获得。并不是因为分资源来唤醒吧,A,B,C应该也会被唤醒。 这取决于a,b,c和A,B,C是否共用synchronize资源a能唤醒b,c,是因为a,b,c共用了一个队列,如果A,B,C用的是另一个队列,那么a的notifyAll对A,B,C并不产生任何影响用代码简单地说明synchronized(queue1) { ... queue1.notifyAll(); //这个notifyAll只会影响使用queue1的线程,不会影响queue2的线程}synchronized(queue2) { ... queue2.notifyAll(); //这个notifyAll只会影响使用queue2的线程,不会影响queue1的线程}所以你的问题的答案,取决于A,B,C是否和a,b,c使用了共同的资源,简单地说就是是否共用了同一段synchronized代码 struts2的问题 JFrame 如何监听子窗口关闭事件? Object类中toString的用法问题 菜鸟求助:Unknown character set: 'dos' 错误 OOP问题 求助!java图片加水印问题!!! double运算 3 * 0.4 = 1.2000000000000002 这是为什么? 怎么样能打出这种结果? 分不多,还是希望能解决问题!!大家都是朋友嘛, 请问该学java该怎样开头? paintComponent的问题 Eclipse导入文件后运行不了,是不是要重新设路径啊?
a能唤醒b,c,是因为a,b,c共用了一个队列,如果A,B,C用的是另一个队列,那么a的notifyAll对A,B,C并不产生任何影响
用代码简单地说明
synchronized(queue1) {
...
queue1.notifyAll(); //这个notifyAll只会影响使用queue1的线程,不会影响queue2的线程
}synchronized(queue2) {
...
queue2.notifyAll(); //这个notifyAll只会影响使用queue2的线程,不会影响queue1的线程
}
所以你的问题的答案,取决于A,B,C是否和a,b,c使用了共同的资源,简单地说就是是否共用了同一段synchronized代码