sleep() 和 wait() 有什么区别?

来源:互联网 发布:mac中没有 hosts文件 编辑:程序博客网 时间:2024/05/02 01:53

sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,把执行

机会给其他线程,如果时间不到你只能调用interreput()来强行打断,
但是监控状态依然保持,到时后会自动恢复。调用 sleep 不会

释放对象锁。wait 是 Object 类的方法,对此对象调用 wait 方法导致本线程放

弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出 notify 方 法( 或

notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。


它们最大本质的区别是:sleep()不释放同步锁,wait()释放同步锁.   
sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常

0 0