码迷,mamicode.com
首页 > 其他好文 > 详细

Object 中的wait和Thread中sleep的区别

时间:2019-02-18 14:23:44      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:exception   except   静态方法   http   notify   join   syn   dex   调度   

摘自 http://www.cnblogs.com/loren-Yang/p/7538482.html

一、区别

1、wait()来自于Object类而sleep来自于Thread类

2、sleep没有释放锁,但是wait释放了锁(使得其他线程可以使用同步控制块或者方法锁)

3、wait,notify和notifyAll只能在同步控制方法或者同步控制块使用,而sleep能在各个地方使用

4、sleep必须捕获异常,但是其它wait不用

5、sleep让一个线程睡眠,等待一段时间后,自动醒来进入可运行状态,不会马上进入运行状态,因为线程调度机制恢复线程也需要时间。如果调用interrup方法,则会抛出InterruptedException。如果不捕获这个异常,那么会进入TERMINATED状态。如果捕获这个异常,那么可以在catch中继续执行后面的代码。

6、sleep是静态方法,只会让当前线程sleep,t.sleep()并不会让t进入sleep

 

 

如果线程并不处于wait,sleep,join状态时,调用interrupt方法线程不会抛出InterruptedException。

wait和notiy必须在synchronized方法或者block中。

 

wait要在while循环中。

Object 中的wait和Thread中sleep的区别

标签:exception   except   静态方法   http   notify   join   syn   dex   调度   

原文地址:https://www.cnblogs.com/ylxn/p/10395315.html

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