java多线程sleep()yield()wait()join()的区别

Posted 张超五

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java多线程sleep()yield()wait()join()的区别相关的知识,希望对你有一定的参考价值。

一、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()方法的线程执行结束,再接着往下执行。

  

  

  

以上是关于java多线程sleep()yield()wait()join()的区别的主要内容,如果未能解决你的问题,请参考以下文章

Java多线程之sleep,wait,join和yield关键字,以及线程的关闭

Java多线程系列---“基础篇”14之 wait,sleep,join,yield,park,unpark,notify等通信机制对比

java中线程里的sleep的用法与yield的用法~

Java中Wait,Sleep和Yield方法的区别

Java中sleep,wait,yield,join的区别

java线程中的 sleep() wait() yield()