相关疑难解决方法(0)

转换wait&notifyAll代码以使用Java 1.5 Lock对象

我们使用在代码段周围使用同步块的代码,需要大量的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;
                    }
                }
            }

java concurrency multithreading thread-safety

5
推荐指数
1
解决办法
2708
查看次数

标签 统计

concurrency ×1

java ×1

multithreading ×1

thread-safety ×1