Мы используем код, который использует синхронизированные блоки вокруг сегментов кода с большим количеством вызовов wait и notifyAll (). Мы пытаемся преобразовать их для использования методов Java 5 Lock.lock () и Lock.unlock (). Как перенести этот код, чтобы удалить все вызовы wait и notifyAll. Я не знаю эквивалента этому при использовании новых функций блокировки.
Любые ссылки с примерами приветствуются.
Заранее спасибо
Уравнение, следующий код должен быть преобразован для использования Lock.lock () и lock.unlock. Первая часть для удаления синхронизированного блока проста, так как мне просто нужно вызвать метод 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;
}
}
}