wait和sleep这两个方法都可以让线程暂停执行,而且都有InterruptedException的异常说明,那么他们的区别是什么呢?
- wait是Object的成员方法,而sleep是Thread的静态方法。
- 只要是作为锁的对象都可以在同步代码块中调用自己的wait方法,sleep方法是Thread的静态方法,表示的是让当前线程休眠指定的时间。
- 调用wait方法需要先获得锁,而调用sleep方法是不需要的。
- 调用wait方法的线程需要用notify/notifyAll来唤醒,而sleep必须设置超时值。
- 线程在调用wait方法之后会先释放锁,而sleep不会释放锁