不同
- 所在类不同。sleep()来自类Thread,它是Thread类的静态方法,使用它会让线程暂停一段事件;wait()所在类Object。
- 使用位置不同。sleep()可以在程序中任何地方使用;wait()只能在同步控制方法里面使用。
- 捕获异常不同。sleep()需要捕获异常;而wait()方法可以不同。
- 锁机制不同。sleep()方法没有锁释放;wait()方法需要释放锁,使其它线程可以使用同步块或方法。
相同
- 都可以阻塞线程继续执行,让线程由运行状态到阻塞状态。
sleep()方法的定义
sleep(long millis) //线程睡眠 millis 毫秒
sleep(long millis, int nanos) //线程睡眠 millis 毫秒 + nanos 纳秒
简单使用
public class ThreadExample {
public static void main(String[] args) {
//休眠1秒
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
System.out.println("exit");
}
}