更多内容请点击了解
本篇文章将详细讲述wait和notify的区别,请往下看
目录
一、wait和notify概念
由于线程之间是抢占式执行的, 因此线程之间执行的先后顺序难以预知,但是实际开发中有时候我们希望合理的协调多个线程之间的执行先后顺序
wait:让当前线程进入等待状态
notify:唤醒在当前对象上等待的线程
注意: wait, notify, notifyAll 都是 Object 类的方法.
wait和notify一定要搭配synchronized来使用,没有synchronized会抛出异常!!!
举个例子:
一群滑稽老铁准备去ATM取钱,一号老铁要取钱,进去之后,发现ATM没钱了,那么他出来了,然后再次进入,一直重复行动,导致后面的滑稽老铁一直进不去,一直等到ATM里面有钱才出来,为那么接下来几号老铁进去拿钱就是随机的,不确定的,为了解决这个情况,可以使用wait和notify来解决。
二、wait()方法详解
wait做的事情:
- 使当前执行代码的线程进行等待. (把线程放到等待队列中)
- 释放当前的锁
- 满足一定条件时被唤醒, 重新尝试获取这个锁.