您当前的位置: 首页 > 

小志的博客

暂无认证

  • 2浏览

    0关注

    1217博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

sleep()方法和yield()方法的区别

小志的博客 发布时间:2021-11-17 21:15:00 ,浏览量:2

目录
    • 一、yield()方法的作用
    • 二、sleep()方法和yield()方法的区别

一、yield()方法的作用
  • yield()是一个静态方法,一旦执行,它会使当前线程让出CPU。但要注意,让出CPU并不表示当前线程不执行了。当前线程在让出CPU之后,还会进行 CPU 资源的争夺,但是是否能够再次被分配到,就不一定了。
  • 因此,对Thread.yield()的调用就好像是在说:我已经完成一些最量要的工作了,我应该是可以休息一下了,可以给其他线程一些工作机会。
  • 如果你觉得一个线程不那么重要,或者优先级非常低,而且又害怕它会占用太多的CPU资源,那么可以在适当的时候调用Thread.yield(),给其它重要线程更多的工作机会。
二、sleep()方法和yield()方法的区别
  • sleep()方法给其他线程运行机会时不考虑线程的优先级,因此会给低优先级的线程以运行的机会;yield()方法只会给相同优先级或更高优先级的线程以运行的机会;
  • 线程执行 sleep()方法后转入阻塞(blocked)状态,而执行 yield()方法后转入就绪 (ready)状态;
  • sleep()方法声明抛出 InterruptedException,而yield()方法没有声明任何异常;
  • sleep()方法比yield()方法 (跟操作系统 CPU 调度相关)具有更好的可移植性,通常不建议使用 yield()方法来控制并发线程的执行。
关注
打赏
1661269038
查看更多评论
立即登录/注册

微信扫码登录

0.0445s