- 线程间通信(同步机制)
-
等待唤醒机制
方法名 说明 wait() 令当前线程进入阻塞状态,同时释放同步监视器 notify() 唤醒一个被wait()的线程(按优先级高低来判断,如果优先级相同,则随机唤醒线程) notifyAll() 唤醒全部线程 注意:
①这3个方法只能在同步方法和同步代码块使用
②不能再lock中使用这3个方法
③这个方法声明再Object类中 -
wait()和sleep()方法的区别
- 相同点:
都会令线程进入阻塞状态 - 不同点:
- 声明的位置:
- wait方法声明再Object类中
- sleep方法声明再Thread类中
- 使用场景:
- wait方法只能在同步方法或同步代码块中使用
- sleep方法可以在任何场景使用
- 在同步代码块和同步方法中使用的不同
- wait方法会释放同步监视器
- sleep方法不会释放同步监视器
- 解除阻塞的方式不同
- wait方法等待指定时间结束后或使用notify()和notifyAll()
- sleep方法等待指定时间结束后
- 声明的位置:
- 相同点:
-