这四个方法都是 Java 中用于控制线程状态和调度的核心方法,但它们在所属类、是否释放锁、使用场景和底层机制上有很大的区别。 以下是它们的详细对比和解析: --- 1. Thread.sleep(long millis) 所属类:(静态方法) 作用:让当前正在执行的线程暂停执行指定的时间,进入阻塞状态()。时间到了之后,线程会自动苏醒并进入就绪状态(),等待 CPU 再次调度。 关于锁:绝对不会释放任何锁。如果线程在同步块()中调用了 ,它会“抱着锁睡觉”,其他等待该锁的线程依然无法进入同步块。 使用场景:通常用于模拟耗时操作、定时任务、或者让出 CPU 给其他线程执行(但保留锁的使用权)。 2. Object.wait() 所属类:(实例方法) 作用:让当前线程进入等待状态( 或 ),直到其他线程调用同一个对象上的 或 方法将其唤醒。 关于锁:会释放当前对象的监视器锁(Monitor Lock)。正因为要释放锁,所以 必须且只能在 同步代码块或同步方法中使用,否则会抛出 异常。 使用场景:主要用于线程间通信(如经典的“生产者-消费者”模型)。 3. Thread.yield()...