当前位置:首页 > 分类 > JAVA入门 > sleep()方法和wait()方法有什么区别

sleep()方法和wait()方法有什么区别

sleep()方法和wait()方法的相同点和区别

1.相同点:

(1)这两个方法都能使线程进入阻塞状态

2.不同点:

(1)sleep()方法是Thread类中的静态方法;而wait()方法是Object类中的方法;

(2)sleep()方法可以在任何地方调用;而wait()方法只能在同步代码块或同步方法中使用(即使用synchronized关键字修饰的);

(3)这两个方法都在同步代码块或同步方法中使用时,sleep()方法将执行机会(CPU)让给其他线程,但是对象的锁依然保持,因此休眠时间结束后会自动恢复,线程回到就绪状态。;而wait()方法将导致当前线程放弃对象的锁(线程暂停执行),进入对象的等待池(wait pool),只有调用对象的notify()方法(或notifyAll()方法)时才能唤醒等待池中的线程进入等锁池(lock pool),如果线程重新获得对象的锁就可以进入就绪状态。