wait()方法通常用于线程通信,结合notify()或者notifyAll()使用。
sleep()方法属于Thread类中的一个方法,表示一个线程进入睡眠状态,等一段时间自动进入RUNABLE状态,然后等待分配时间片即可。
区别在于:
1、wait方法是Object类中的方法,是从一个对象调用(称为锁定对象),而不是从一个线程调用。sleep方法是Thread类中的一个方法
2、wait方法只能用在同步方法或者同步代码块上,sleep方法可以在任何地方使用。
3、wait会释放当前线程所持有的对象的锁,其他线程可以访问该对象的synchronized代码块或者synchronized同步方法。sleep方法不会释放锁,而是等待经过指定的时间之后,再次进入RUNABLE状态,等待时间片分到该线程的时候,该线程再RUN起来
4、sleep方法可以在任何地方使用,但是wait方法只能在synchronized同步方法或者同步代码块中使用。
5、sleep方法到了指定的时间自己启动(但是要等待时间片),wait()之后想要启动的话需要调用notify()或者notifyAll()