2017-08-23 2 views
0

に基づいてロックを実装しますか?は、ステータス

私はロックが他の呼び出しを待つことを知っていますが、私は待って実行するよりもむしろスキップします。

答えて

0

あなたは

のtryLock

ブールのtryLockを(使用することができます) は、それが呼び出し時に自由である場合にのみ、ロックを取得します。 ロックが利用可能であれば取得し、値trueですぐに戻ります。ロックが利用できない場合、このメソッドは値falseを返します。

この方法の典型的な使用方法のイディオムは次のようになります。

Lock lock = ...; 
    if (lock.tryLock()) { 
     try { 
      // manipulate protected state 
     } finally { 
      lock.unlock(); 
     } 
    } else { 
     // perform alternative actions 
    } 

この用法は、それが取得された場合はロックがアンロックされることを保証し、ロックが取得されなかった場合はロックを解除しようとしません。 戻り値: ロックが取得された場合はtrue、そうでない場合はfalse

+0

ロックが解放された直後にメソッドが再度呼び出される場合はどうなりますか? – cassandrad

+0

取得する最初の試行呼び出しでロックを取得する必要があります – Puneet