Thread.sleep ()使当前线程在指定的时间处于“非运行”状态。线程一直持有对象的监视器。如果另一线程调用了 interrupt ()方法,它将唤醒那个“睡眠的”线程。
object.wait ()使当前线程处于“不可运行”状态,和 sleep ()不同的是 wait 是 object 的方法而不是 thread。调用 object.wait ()时,线程先要获取这个对象的对象锁,当前线程必须在锁对象保持同步,把当前线程添加到等待队列中,随后另一线程可以同步同一个对象锁来调用 object.notify (),这样将唤醒原来等待中的线程,然后释放该锁。基本上 wait ()/notify ()与 sleep ()/interrupt ()类似,只是前者需要获取对象锁。
|