黑马程序员技术交流社区

标题: 线程间是怎样实现同步和通讯的 [打印本页]

作者: heheka123    时间: 2014-4-3 14:53
标题: 线程间是怎样实现同步和通讯的
我的认识是:将需要同步的代码进行封装,并在该代码上加了一个锁。
      多个线程在处理同一个资源。 但是处理的动作(线程的任务)却不相同

等待唤醒机制中经典问题:生产者消费者问题。
问题在于两点:
1,本方唤醒了本方。
2,被唤醒的本方没有判断标记。只要将if判断该外while判断。
将if改为while循环判断标记后,出现了死锁。
因为本方唤醒了本方,而被唤醒的本方一判断标记,就继续等待。这样所有的线程都等待了。

必须唤醒对方才行,但是没有直接唤醒对方的动作,所以就使用了notifyAll,唤醒全部。
对吗??????求解
作者: ╰青青子佩ˊゝ    时间: 2014-4-3 21:11
将if改为while循环判断标记后,出现了死锁。(这个地方不能说出现了死锁,不是出现死锁)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2