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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

毕向东的课程有误 线程yied不是指让出cpu让其它线程执行 而是指让出CPU让所有的线程执行  也包括刚刚放弃执行权的那个线程

3 个回复

倒序浏览
木有人回答吗
回复 使用道具 举报
这么说吧,当有多个线程同时在执行的时候,每个线程都有它分配的时间片
当这个时间片用完的时候,这个线程暂时不执行,换到下个线程执行,然后再给
它分配个时间片,再执行.....
yield()方法就是,当代码执行到yield()时,即使给这个线程分配的时间片没有
用完也不继续执行了,让给下个线程.让下个线程开始执行
参考:http://bbs.csdn.net/topics/270019000
回复 使用道具 举报
根据api的说明,yield()这个方法的意思是:暂停当前正在执行的线程对象,并执行其他线程。
也就是说,当线程执行到这句代码时,放弃一次cpu执行权。但是cpu切换的速度太快,说不定它刚放弃一次执行权,cpu切换到其他线程,马上又切换到这个线程了,所以效果跟没有放开过执行权差不多。
这个yield()方法的意思只是让线程放弃一次cpu的执行权,而不是一直放弃执行权。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马