28. wait()和sleep()的区别

2016/10/8 16:57 下午 posted in  Java comments
wait() sleep()
原理 Object的方法,用于线程通信 Thread的静态方法
对锁的处理机制 释放资源给其它线程使用,在调用notify或notifyAll之后,重新参与争夺资源 只是放cpu,时间到即恢复运行,不涉及线程通信
使用区域 必须在同步控制方法或语句块中使用(synchronized) 可在任何地方
sleep yield
运行机会 会给低优先级的线程机会运行 只给相同优先级或更高的线程运行
转入状态 使线程转入阻塞状态,短时间内部执行 使线程转入可执行状态,可参与竞争cpu,所以可能该线程立即又被执行
异常 抛出InterruptedException
移植性 比yield高 与操作系统相关