随笔 - 48  文章 - 0 评论 - 0 阅读 - 29447
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

一、sleep()、yield()、wait()、join()的区别

  1.sleep() 释放CPU,不释放锁

  使当前线程进入阻塞状态,指定时间内不会执行。

  2.yield() 释放CPU,不释放锁

  使当前线程回到可执行状态,有可能出现回到可执行状态又马上可以执行的情况。yield只能使同级优先级或者更高有优先级的线程有执行的机会。

  3.wait() 释放CPU,释放锁

  调用对象的wait方法之后,需要荣国notify()或者notifyAll()方法来唤醒。

  调用对象的wait()、notify()、notifyAll()的前提是:当前线程必须持有该对象的锁,所以这三个方法必须在synchronized函数或synchronized block中进行调用。

  4.join() 释放CPU,释放锁

  等待调用join()方法的线程执行结束,再接着往下执行。

  

  

  

posted on   张超五  阅读(229)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示