我们使用在代码段周围使用同步块的代码,需要大量的wait和notifyAll()调用.我们正在尝试将这些转换为使用Java 5 Lock.lock()和Lock.unlock()方法.如何迁移此代码以删除所有wait和notifyAll调用.我不知道使用新的锁定功能相当于这些.
任何与示例的链接将不胜感激.
提前致谢
方程式,下面的代码需要转换为使用Lock.lock()和lock.unlock删除synchronized块的第一部分很简单,因为我只需要调用lock()方法.问题是可以为notifyAll()和wait方法做些什么.
synchronized( LOCK )
{
while( !Thread.interrupted() )
{
try
{
working = runRules();
if( !working )
LOCK.notifyAll();
LOCK.wait( working ? shortTimeout : longTimeout );
}
catch( final InterruptedException e )
{
Package.log.info( "Thread was interrupted. Exiting.", e );
return;
}
}
}