sleep和wait的区别有:
1,这两个方法来自不同的类分别是Thread和Object
2,最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
3,只能在同步控制方法或同步块中调用wait()、notify()和notifyAll()。如果在非同步的方法里调用这些方法,在运行时会抛出IllegalMonitorStateException异常。而sleep可以在任何地方使用。
1,这两个方法来自不同的类分别是Thread和Object
2,最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
3,只能在同步控制方法或同步块中调用wait()、notify()和notifyAll()。如果在非同步的方法里调用这些方法,在运行时会抛出IllegalMonitorStateException异常。而sleep可以在任何地方使用。
//wait()示例
synchronized(x){
x.wait()
//....
x.notify()
}
//sleep()示例
try{
System.out.println("I'm going to bed");
Thread.sleep(1000);
System.out.println("I wake up");
}catch(IntrruptedException e) {
}
4,sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常