首页 > 试题广场 >

java中Thread.sleep()和 Object.wa

[问答题]

java中Thread.sleep()和 Object.wait() 有什么区别?

1.wait()方法属于Object类的方法;Sleep属于Thread类的方法
2.wait()必须要在同步代码块或者同步方法中使用,也就是需要获取对象锁,而sleep()方法没有限制,可以在任何地方使用;wati()方***释放占有的对象锁,使得该线程进入线程池等待获取下一次的对象锁,而sleep()方法只是会让出CPU,并不会释放掉对象锁;
3.sleep()会在等待时间到达后,再次获取到CPU时间片就会继续执行,而wait()方法必须等待Object类的notify/notifyAll通知后才会离开等待池,并且再次会的CUP时间片才会继续执行;
发表于 2018-08-06 22:42:18 回复(0)
sleep()来自Thread类,wait()来自Object类;
调用sleep()方法的过程中线程不会解放对象锁,而调用wait()方法线程会解放对象锁;
sleep()睡眠后不出让系统资源,wait()出让系统资源其他线程可以占用CPU;
sleep()需指定一个睡眠时间,时间一到自动唤醒。
发表于 2018-08-11 13:48:53 回复(0)

线程占有的资源不少,包含CPU资源和锁资源这两类。

sleep(long mills):让出CPU资源,但是不会释放锁资源。

wait():让出CPU资源和锁资源。

发表于 2019-05-28 22:25:47 回复(0)
sleep是使线程休眠一段时间,wait是线程间实现同步一种机制。
发表于 2019-03-25 16:35:51 回复(0)