一、简介
方法 |
sleep() |
wait() |
概念 |
使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行) |
导致当前线程等待,直到另一个线程调用该对象的 notify()方法或 notifyAll()方法 |
方法属于哪一个类 |
sleep()是线程线程类Thread中的方法 |
wait()是Object的方法 |
是否释放对象锁 |
调用 sleep()方法,线程不会释放对象锁 |
调用 wait() 方法线程会释放对象锁,以便其他正在等待该资源的线程得到该资源进而运行 |
方法执行的地方 |
可以在任何地方使用 |
只能在同步方法或同步块中使用 |
是否自动唤醒 |
sleep(millionseconds)需要指定一个睡眠时间,时间一到会自然唤醒 |
wait()需要配合notify()或者notifyAll()使用,才能唤醒 |
是否需要捕获异常 |
sleep()方法必须捕获异常 |
wait()方法必须捕获异常 |
说明 |
调用会暂停此线程指定的时间,但监控依然保持,不会释放对象锁,到时间自动恢复 |
调用会放弃对象锁,进入等待队列,待调用notify()/notifyAll()唤醒指定的线程或者所有线程,才会进入锁池,需再次获得对象锁才会进入运行状态 |