因为该线程被唤醒之后可能条件依旧不满足
3:条件满足,执行业务逻辑
通知方:
1:获取对象的锁
2:改变相关条件
3:通知所有等待在对象的线程
都是属于...测试发现全部的线程全部被唤醒了,然后其中三个等待城市变化的线程再次进入阻塞,另外三个等待里程数变化的执行成功退出阻塞
返回结果:
check km 11
the km is 101, I will change...DB.
check site 11
因为notify通知任意一个在这个对象上阻塞的线程,如果正好通知到了,等待里程数的,那么也只有一个被唤醒,其他两个继续阻塞,如果通知到了一个等待城市变化的那么这个线程将继续进入阻塞...* @see java.lang.Object#notifyAll()
* @see java.lang.Object#wait()
*/...所以说notify的唤醒是随意的,并且信号只发出一次
但是据有人说,在线程进入等待的时候会进入一个等待队列,notify会唤醒第一个等待的线程
我得到的结果就是在HotSpot虚拟机当中 notify唤醒的是阻塞线程队列当中的第一个