12.3.5 计时等待(Time_Waiting)
与等待状态(Waiting)不同的是,计时等待(Time_Waiting)的线程等待是有一定时长的。当等待时间到,线程会退出等待状态。让线程进入计时等待的方法有:
Object.wait(timeout)方法;
Thread.join(timeout)方法;
Thread.sleep(sleepTime)方法。(https://www.daowen.com)
上述方法都需要设置等待时长,当等待时间到后线程将退出等待状态。如果某个线程对象调用了Object.wait(timeout)方法,线程会一直等待到另一个线程调用该对象上的Object.notify()方法或Object.notifyAll()方法,或者指定的等待时间已过;如果线程中调用了Thread.join(timeout)方法,则会一直等待到另一个线程运行指定等待时间之后,再退出等待状态。另外,如果线程调用了Thread.sleep()方法,则表示线程主动放弃所占用的处理器资源,进入等待状态,等待时间到后直接进入等待队列,等待系统分配CPU继续执行。
说明:
因Thread.sleep()方法进入等待状态的线程在等待时间结束后,直接进入就绪状态,不需要重新获取对象上的同步锁。也就是说,被sleep()方法造成等待的线程,不会释放已经获得的对象锁。