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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2015-5-6 12:19  /  883 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

首先,r是共享资源,,r中的成员变量,flag,name,count都在run方法用到,有多条语句操作它们,所以应该吧它们放在属于同一个锁的代码块中,
回复 使用道具 举报
高昌德 发表于 2015-5-6 13:50
首先,r是共享资源,,r中的成员变量,flag,name,count都在run方法用到,有多条语句操作它们,所以应该吧它 ...

还没有写完就一部小心提交了,,,
首先flag是true,set方法先执行了一遍,把flag置为了false,循环回来判断flag为false,
接着out方法执行一遍,把flag置为了true,当set方法的if判断为true时,进到if里面但没有拿到锁,就停在那了,然后out方法判断为flag为true,也没法进入if里面,也等在那了,,,,,
你把synchronized放到if的上边就可以了,,,,,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马