简述Java中sleep(long millis)方法和wait()方法有什么区别。
时间: 2024-06-06 10:07:02 浏览: 231
C#中sleep和wait的区别分析
1. sleep(long millis) 方法和 wait() 方法的作用不同。sleep() 方法是使当前线程休眠指定的毫秒数,不会释放对象锁;而 wait() 方法则是使当前线程等待,直到其他线程调用 notify() 或 notifyAll() 方法唤醒它。
2. sleep(long millis) 方法属于 Thread 类中的静态方法,可以在任何地方直接调用;而 wait() 方法属于 Object 类中的实例方法,只能在同步块中使用。
3. sleep(long millis) 方法会使线程暂停指定的时间,不会释放对象锁;而 wait() 方法会使线程释放对象锁,等待其他线程的唤醒。
4. sleep(long millis) 方法不需要被唤醒就可以自动醒来,而 wait() 方法必须等待其他线程调用 notify() 或 notifyAll() 方法才能醒来。
5. sleep(long millis) 方法可以在任何地方调用,而 wait() 方法必须在同步块中调用。在同步块之外调用 wait() 方法会抛出 IllegalMonitorStateException 异常。
6. sleep(long millis) 方法可以被中断,它会抛出 InterruptedException 异常,而 wait() 方法也可以被中断,但是它不会抛出 InterruptedException 异常,而是被唤醒后继续执行。
阅读全文