Sleep() 和 Wait() 是两个不同的方法,用于控制线程的执行。
Sleep() 方法:
是线程类 Thread 的静态方法,它使当前线程暂停执行一段时间。
Sleep() 方法接受一个参数,表示线程暂停的时间长度,单位是毫秒。
在暂停期间,线程不会释放锁资源。当暂停时间结束后,线程会重新进入就绪状态,等待 CPU 调度执行。
Sleep() 方法可以用于模拟一段时间的延迟操作。
Wait() 方法:
是 Object 类的实例方法,它使当前线程进入等待状态,直到其他线程调用相同对象的 Notify() 或 NotifyAll() 方法唤醒它。
Wait() 方法必须在同步代码块或同步方法中调用,并且会释放锁资源。当线程被唤醒后,它会重新竞争锁资源,并继续执行。
Wait() 方法通常与Notify() 或 NotifyAll() 方法配合使用,用于实现线程间的协作。(Notify:通知)
区别:
- Sleep() 是 Thread 线程类的方法,而 Wait() 是 Object 类的方法。
- Seep() 会暂停当前线程的执行一段时间,而 Wait() 会使当前线程进入等待状态。
- Sleep() 不会释放锁资源,而 Wait() 会释放锁资源。
- Sleep() 不需要被其他线程唤醒,而 Wait() 需要被其他线程调用相同对象的 Notify() 或 NotifyAll() 方法唤醒。
需要注意的是,Sleep() 和 Wait() 方法都可能抛出 InterruptedException 异常,需要进行异常处理。(Interrupted 英 [ˌɪntəˈrʌptɪd]:中断的)