A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© heheka123 中级黑马   /  2014-4-3 14:53  /  913 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我的认识是:将需要同步的代码进行封装,并在该代码上加了一个锁。
      多个线程在处理同一个资源。 但是处理的动作(线程的任务)却不相同

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

必须唤醒对方才行,但是没有直接唤醒对方的动作,所以就使用了notifyAll,唤醒全部。
对吗??????求解

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

1 个回复

倒序浏览
将if改为while循环判断标记后,出现了死锁。(这个地方不能说出现了死锁,不是出现死锁)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马