对比
名称 | 作用 | 方法 | 锁释放 | 用途 | 用法 | 执行 | 依赖 |
---|---|---|---|---|---|---|---|
sleep() | 睡眠 | Thread类的静态方法 | 不释放锁 | 一定时间内暂停线程执行 | 睡眠指定时间之后,线程会自动苏醒 | 没有限制 | 不依赖于同步器 synchronized() |
wait() | 暂停 | Object类的方法 | 释放锁 | 线程间交互和通信 | 暂停后,可以通过notify()或notifyAll()来唤醒wait的线程 | 要在同步方法或者同步代码块中执行 | 依赖于同步器 synchronized() |
一、sleep()
- sleep()可以使线程睡眠一段时间。
- sleep()是Thread类的静态方法。
- sleep()是不释放锁的。
- sleep()常用于一定时间内暂停线程执行。
- sleep()方法睡眠指定时间之后,线程会自动苏醒。
- sleep()不需要一定在在同步方法或者同步代码块中执行。
- sleep() 方法不依赖于同步器 synchronized()。
二、wait()
- wait()都可以暂停线程的执行。
- wait()是Object类的方法。
- wait()是释放锁的,而且会加入到等待队列中。
- wait()常用于线程间交互和通信。
- wait()方法被调用后,可以通过notify()或notifyAll()来唤醒wait的线程。
- wait()要在同步方法或者同步代码块中执行 wait() 方法需要依赖 synchronized 关键字。