本帖最后由 清心玉质 于 2013-8-13 15:47 编辑
问题一:假如t1生产完一个之后会返回来继续判断(flag),但是毕老师在讲解if换成while时解释说:“if是不是只判断一次?我们如果变成while是不是判断多次,对不大家?”(视频12天—5,19:00—20:00分钟),那这不前后矛盾了吗?
t1生产完一个之后会返回来继续判断(flag),不是if语句的判断作用,而是因为其他线程都在wait中,只有t1有执行权,如果没有执行到t1的wait条件,它就会一直执行。
问题二 假如:t2在while判断为true的try语句之后在这里wait(),而后被notify获取到了执行资格也抢到cpu执行权,这里为什么t2线程不是继续往下执行而是再回到while这里判断(flag),不是应该从try语句后继续执行再回来判断吗?
其实这个问题主要是对while不够了解,你可以这么看:
while(执行条件)
执行语句1;
执行语句2;
当满足执行条件时,执行的是1语句,再回去判断执行条件,如果不满足,才会执行到2语句。t2从1处醒来,肯定要回去判断执行条件的,后面的你就可以多想想了,比如条件是否满足 ,执行什么语句。
|