终于搞清楚了:java中wait和sleep的区别

都是睡眠

wait是Object类的方法,会释放锁。

sleep是Thread.sleep的方法,不会释放锁。

当线程执行wait()方法时候,会释放当前的synchronized锁住的对象,然后让出CPU,进入等待状态。

对锁的 处理机制不同。由于sleep()方法的主要作用是让线程暂停执行一段时间,时间一到则自动恢复,不涉及线程间的通信,因此,调用sleep()方法并不会释放锁。而wait()方法则不同,当调用wait()方法后,线程会释放掉他所占用的锁,从而使线程所在对象中的其他synchronized数据可以被其他线程使用。

猜你喜欢

转载自blog.csdn.net/sunyufeng22/article/details/121021320