线程基本控制方法

通过动画演示 Thread.sleep(), Thread.yield(), thread.join() 的效果

1. 线程休眠 Thread.sleep(ms)

让当前线程暂停执行指定的时间,不释放锁(如果有)。

Thread-A
Ready
try {
    // 线程暂停执行,进入 TIMED_WAITING 状态
    Thread.sleep(2000);
} catch (InterruptedException e) { ... }
2. 线程礼让 Thread.yield()

提示调度器当前线程愿意放弃 CPU 使用权。但这只是一个“提示”,调度器可以忽略。通常会让出给同优先级或更高优先级的线程。

Thread-A
Ready
Thread-B
Ready
// 建议调度器让出 CPU,状态可能从 Running -> Runnable
Thread.yield();
3. 线程加入 t.join()

场景: 老板 (Main) 分配任务给员工 (Worker)。老板做到一半时,必须等员工把报告写完,才能继续后续工作。

老板 (Main)
🔒
Ready
员工 (Worker)
Standby
// 1. 老板开始工作...
Worker worker = new Worker(); worker.start();
// 2. 老板需要员工的结果,在此阻塞等待
worker.join(); // <-- 关键点
// 3. 员工完成,老板继续
System.out.println("All Done!");