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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天看了老毕的多线程,消费者购买者视频。
感觉有点小不懂啊。
为什么在同步里面,要用到while,用了while之后为何所有线程会进入冻结状态呢?:'(

1 个回复

倒序浏览
使用if的话,假如有2条线程进来,这个两条线程都是在if代码下面的,假如Thread-0出现wait状态,这个时候执行Thread-1,等到Thread-1执行完毕,唤醒Thread-0的时候,这个时候问题的关键来了,由于if指挥判断一次,当Thread-0唤醒的时候,它不会再去进行条件的判断,这样就会多生产,少消费的情况.
而使用while循环的时候,就避免了判断一次的弊端,当Thread-0唤醒的时候,它还会进入while中的条件去进行判断,这样就避免了多生产问题的出现.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马