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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ringfingers 中级黑马   /  2015-9-27 17:06  /  218 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Thread.yield();   
Sun api 明确指出 “暂停当前正在执行的线程对象,并执行其他线程。 ”
所以yield()是让当前线程暂停(由于没有说明执行其他线程的时间,很有可能,执行了其他同优先级的线程后马上又回到该线程了。),以便让具有相同优先级的线程进入执行状态,但不是绝对的。因为虚拟机可能会让该线程重新进入执行状态。

“比如说说,没有yield()的情况下,一个线程在pop,有可能另外一个线程对它造成什么样的不同步?”
那要看另一个线程的代码了,如果另一个线程和pop是同步的,那么用了yield另一个线程执行完后才执行point--;return goods;不用如果另一个线程用到了point,他的值可能已经是自减也可能是没自减的。。。

1 个回复

倒序浏览
这个方法好像作用不是很好,一般sleep和wait用的比较多
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马