一.概述
线程同步中除了需要了解synchronized外,还需要了解wait(),notify(),notifyAll()等的使用情况。一般来说,wait/notify/notifyAll与synchronized是配合使用的。
二.wait方法
2.1 wait()方法
当前线程处于运行状态,如果调用了wait()方法,那么这个时候当前线程会马上释放cpu资源并进入等待队列,直到notify/notifyAll触发,才进入到就绪状态并争夺cpu资源。
如上图所示,当前线程获取到对象锁后,如果调用wait()方法,则是直接释放对象锁并进入等待队列。
2.2 wait(long millis)方法
当前线程处于运行状态,如果调用wait(long millis)方法,则是马上释放cpu资源并进入等待队列,当设定的时间结束后,会自动进入到就绪状态并争夺cpu资源。