参考答案:
Thread.sleep()让当前线程进入阻塞状态(TIMED_WAITING),在指定时间内 不参与 CPU 竞争。
InterruptedException1try { 2 Thread.sleep(1000); // 睡眠 1 秒 3} catch (InterruptedException e) { 4 e.printStackTrace(); 5}
Thread.yield()让当前线程主动让出 CPU 使用权,但不进入阻塞状态。
1Thread.yield();
| 对比点 | sleep() | yield() |
|---|---|---|
| 是否阻塞 | 是(TIMED_WAITING) | 否(Runnable) |
| 是否释放 CPU | 是 | 可能 |
| 是否释放锁 | 否 | 否 |
| 是否可指定时间 | 是 | 否 |
| 是否抛异常 | 是(InterruptedException) | 否 |
| 调度是否确定 | 相对确定 | 不确定(提示行为) |
sleep()
RUNNING → TIMED_WAITING → RUNNABLE
yield()
RUNNING → RUNNABLE
最近更新时间:2026-01-30