sleep和wait的区别面试题
时间: 2024-05-28 18:11:02 浏览: 77
在Java中,sleep()和wait()都是用于线程的暂停,但它们的作用和使用方式有所不同。
1. sleep()方法是Thread类的静态方法,主要用于让线程休眠一段时间,不释放锁。它的作用是让当前线程暂停执行指定的时间,让出CPU时间片,以便其他线程有机会执行。在等待时间结束后,线程将重新进入可运行状态。
2. wait()方法是Object类的成员方法,主要用于线程的等待,释放锁。它的作用是让线程等待某个条件满足,当条件满足时,线程被唤醒,并重新进入锁定池等待获取对象锁。
因此,sleep()主要用于线程的时间调度,wait()主要用于线程的协作,即线程之间的通信。此外,wait()必须在同步块或同步方法中使用,否则会抛出IllegalMonitorStateException异常,而sleep()可以在任何地方使用。
阅读全文