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