ReentrantLock的注释中文翻译

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LiuRenyou/article/details/78338102
具有相同基本的可重入互斥互斥锁

*行为和语义作为隐式监视器锁使用

{代码同步}方法和语句,但具有扩展名

*能力。

*

* <BR>一{ @代码}是< EM > ReentrantLock拥有< / EM >的螺纹上

*成功锁定,但尚未解锁。一个线程调用

{代码锁定}将返回,成功获取锁,当

*锁不是另一个线程拥有的。该方法将返回

*如果当前线程已经拥有锁,请立即执行。这可以

*检查使用方法{@链接# isheldbycurrentthread },和{”链接

* # getholdcount }。

*

*这个类的构造函数接受一个可选的

*公平性<参数>。当设置{代码}时,在

*争用,锁允许授予对最长等待的访问权

*螺纹。否则,此锁不能保证任何特定

*访问顺序。使用许多线程访问的公平锁的程序

*可能显示较低的总吞吐量(即较慢);

*比默认设置要慢,但要小一些。

*在获得锁和保证缺乏时间的差异

*饥饿。但是请注意,锁的公平性不能保证。

*线程调度的公平性。因此,许多线程中的一个使用

*公平锁可以多次获得,而其他

*活动线程没有进展,当前不支持

*锁。

*注意,不计时{@链接# trylock() trylock }方法不

*尊重公平设置。如果锁成功

*即使其他线程在等待,也可用。

*

*建议立即执行< < > > > > >

*用一个{代码}块来调用{代码锁定},最多

*通常在前/后施工中,例如:

class X {
 *   private final ReentrantLock lock = new ReentrantLock();
 *   // ...
 *
 *   public void m() {
 *     lock.lock();  // block until condition holds
 *     try {
 *       // ... method body
 *     } finally {
 *       lock.unlock()
 *     }
 *   }
 * }



除了实现{链接锁}接口,

*类中定义的方法的代码}和{ @锁

* { @代码getlockqueuelength },以及一些相关的

{代码保护}访问方法,可能对

*仪器和监测。

*

*这个类的序列化行为与内置的方式相同。

*锁:一个反序列化,锁在锁定状态,无论

*序列化时的状态。

*

*此锁支持最多2147483647个递归锁。

*同一线程。超过此限制的尝试导致

{链接错误}从锁定方法抛出。


/**

获取锁,如果它不被另一个线程持有并返回

*立即将锁定计数设置为1。

*如果当前线程已经持有锁,则保持

*计数递增1,该方法立即返回。

*如果锁由另一个线程持有,则

*线程调度时禁用当前线程

*目的和谎言处于休眠状态,直到获得锁为止,
锁存计数设置为1。

**/

public void lock() {
        sync.lock();
    }



/**

获取该锁除非当前线程

* { @ linkplain螺纹#中断中断}。

*如果它不被另一个线程持有并返回,则获取锁。

*立即设置锁持有数1。

*如果当前线程已经持有此锁,则持有计数

*递增1,方法立即返回。
*
* <BR>如果锁被另一个线程然后

*线程调度时禁用当前线程

*目的和谎言休眠,直到其中一件事发生:

* < UL >

* <李>锁获取当前线程;或
* <李>其他线程{ @ linkplain螺纹#中断}的

*当前线程。


*如果当前线程获取锁,则锁持有。

*计数设置为1。

*如果当前线程:

* < UL >

* <在该方法的条目中设置了中断状态;或

*

* <李>是{ @ linkplain螺纹#中断中断}而获取锁,

*然后抛出InterruptedException } { @链接与当前线程的

*已中断状态已清除。

*在这个实现中,因为这个方法是显式的。

*中断点,优先考虑响应

*中断正常或可重入锁的获取。

* @抛出InterruptedException如果当前线程被中断

**/

 public void lockInterruptibly() throws InterruptedException {
        sync.acquireInterruptibly(1);
    }


/**

只有在其他线程不被锁时才获取锁。

*调用。

*

*如果它不被另一个线程持有,则获取锁。

*立即返回值{代码},设置

*锁定计数为1。即使该锁已设置为使用

*公平的订货策略,调用代码trylock() } { @ < EM >将< / EM >

*立即获得锁,如果它是可用的,不管是否

*其他线程正在等待锁。

*这";闯";行为可以在一定程度上是有用的

*环境,即使它打破公平。如果你想要荣誉

*此锁的公平设置,然后使用

* {@链接# trylock(长、timeunit)trylock(0,timeunit。秒)}

*这几乎是等效的(它也检测中断)。

*

*如果当前线程已经持有此锁,则保持

*计数递增1,方法返回{代码真}。

*

*如果锁由另一个线程持有,则此方法将返回。

*立即使用值{代码false }。

*

*如果返回锁是空闲的,并且返回的代码为真},则由

*当前线程,或锁已被当前持有

*线程;{代码false }否则

**/

public boolean tryLock() {
        return sync.nonfairTryAcquire(1);
    }



/**

获取锁,如果它不被给定线程中的另一个线程锁住。

*等待时间和当前线程没有

* { @ linkplain螺纹#中断中断}。

*

*如果它不被另一个线程持有并返回,则获取锁。

*立即用值{代码},设置锁保持计数

*对一。如果该锁已设置为使用公平排序策略,则

*如果任何其他线程都无法获得可用的锁< > >

*在等锁。与此形成对比的是,{@链接# trylock() }

*方法。如果你想要一个定时{ @代码不允许讨价还价在trylock }

*一个公平的锁,然后结合定时和非计时形式在一起:

*

* <预>如果(锁。trylock() | |锁。trylock(超时,单位)){…}

* <前>

*

*如果当前线程

*已持有此锁,然后持有计数递增1和

*方法返回{代码真}。

*

* <BR>如果锁被另一个线程然后

*线程调度时禁用当前线程

*目的和谎言潜伏,直到三件事之一发生:

*

* < UL >

*

* <李>锁获取当前线程;或

*

* <李>其他线程{ @ linkplain螺纹#中断}

*当前线程;或

*

* <李>指定的等待时间的流逝

*

**

*

* < >如果获取锁,则返回值{代码真}并

*锁定计数设置为1。

*

*如果当前线程:

*

* < UL >

*

* <在该方法的条目中设置了中断状态;或

*

* <李>是{ @ linkplain螺纹#中断中断}而

*获取锁,

*

**

*然后抛出InterruptedException } { @链接与当前线程的

*已中断状态已清除。

*

* <BR>如果指定的等待时间的流逝然后值{ @代码错误}

*返回。如果时间是小于或等于零,方法

*不会等待。

*

*在这个实现中,因为这个方法是显式的。

*中断点,优先考虑响应

*中断对锁的正常或重入获取,以及

*在报告的等待时间的流逝。

*

* @param超时时间等待锁

* @param单位时间单位的超时参数

*如果返回锁是空闲的,并且返回的代码为真},则由

*当前线程,或锁已被当前持有

*线程和{代码}如果等待时间经过之前

*可以获得锁。

* @抛出InterruptedException如果当前线程被中断

* @抛出NullPointerException异常如果时间单位为零

**/

public boolean tryLock(long timeout, TimeUnit unit)
            throws InterruptedException {
        return sync.tryAcquireNanos(1, unit.toNanos(timeout));
    }


/**

释放此锁的尝试。

*

*如果当前线程是此锁的持有者,则保持

*计数减少。如果持有计数现在是零,那么锁

*被释放。如果当前线程不是这个的持有者

*锁然后{@链接illegalmonitorstateexception }扔。

*

* @投illegalmonitorstateexception如果当前线程不

*拿着这个锁

**/

public void unlock() {
        sync.release(1);
    }



/**

返回一个链路状态} { @实例使用这

{链接锁}实例。

*

*返回的连接条件}实例支持相同的

*与{链接对象}监视方法({链接)一起使用

*对象# wait()等},{“链接对象#通知通知},{”链接,

*对象# notifyAll notifyAll })当使用内置

*监视锁。

*

* < UL >

*

< < > >如果任何锁条件不存在时,该锁不被保留

* { @ linkplain await() }或{等条件# @ linkplain

*条件#信号信号}的方法被调用,然后{@链接

* illegalmonitorstateexception }扔。

* <li>当条件{ @ linkplain条件# await()等待}

*方法被称为锁释放,并在他们之前。

*返回,锁和锁持有计数恢复恢复

*当方法被调用时。
* <li>如果线程是{ @ linkplain螺纹#中断中断}

*等待时,等待将终止,{链接

*会抛出InterruptedException },和线程的

*中断状态将被清除。

* <李>等待线程发出信号,按照先进先出的顺序。

* <李>订购锁的线程返回重新定位

*等待方法与最初的线程相同。

*获取锁,在默认情况下未指定,

*但是,对于那些不公平的人来说,锁有利于那些已经存在的线程。

*等待最长。

*返回条件对象

**/

public Condition newCondition() {
        return sync.newCondition();
    }




释放此锁的尝试。

*

*如果当前线程是此锁的持有者,则保持

*计数减少。如果持有计数现在是零,那么锁

*被释放。如果当前线程不是这个的持有者

*锁然后{@链接illegalmonitorstateexception }扔。

*

* @投illegalmonitorstateexception如果当前线程不





猜你喜欢

转载自blog.csdn.net/LiuRenyou/article/details/78338102