码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-09-02 15:35:11      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:wait   定时   必须   not   block   java   结束   需要   对象   

一、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()的区别

标签:wait   定时   必须   not   block   java   结束   需要   对象   

原文地址:http://www.cnblogs.com/Zchaowu/p/7466594.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!