我需要睡一段给定的时间并在这段时间内释放监视器。如何做到这一点?可能是等待一些计时器或什么的?
更新
我正在实现声音处理,如果时间非常先进,需要延迟流读/写。我认为有两种一般的方法:(1)等待大进步(2)有特殊的监视器和计时器来锁定它,直到时间到来。
我需要睡一段给定的时间并在这段时间内释放监视器。如何做到这一点?可能是等待一些计时器或什么的?
更新
我正在实现声音处理,如果时间非常先进,需要延迟流读/写。我认为有两种一般的方法:(1)等待大进步(2)有特殊的监视器和计时器来锁定它,直到时间到来。
您可以使用 wait() 但它只释放一个监视器,而不是监视器。
根据您的问题,它提出了一些设计问题。理想情况下你
我不确定此功能当前是否可用。原因是
1)一旦你的线程释放了锁,你不能保证在过去的时间(比如 x 秒)之后你肯定会得到锁。JVM 本身并不是这样设计的。
2) Wait() 方法被重载以接受以毫秒为单位的时间,但实现仅确保在调用 wait 时立即释放锁。它不保证您会在经过时间后取回锁。
为什么需要这样的功能?我假设您必须做一些不需要的事情。
方法 sleep() 不需要获取锁,那么你想释放什么?你如何锁定监视器?