このチュートリアルの動作環境: Windows 7 システム、Java 10 バージョン、DELL G3 コンピューター。
1. 入手方法
lock()、tryLock()、tryLock(long time, TimeUnit単位)、lockInterruptibly()はすべてロックを取得するために使用されます。
( 1) lock() メソッドは最も一般的に使用されるメソッドであり、ロックを取得するために使用されます。ロックが別のスレッドによって取得されている場合は、待機します。
( 2) tryLock() メソッドには戻り値があり、これはロックの取得を試行するために使用されます。取得が成功した場合は、取得が失敗した場合 (つまり、ロックが別のユーザーによって取得された場合)、true を返します。 thread) の場合、false が返されます。これは、メソッドが何があってもすぐに返されることを意味します。ロックができないときにそこで待つ必要はありません。
( 3) tryLock(long time, TimeUnit単位)メソッドはtryLock()メソッドと似ていますが、ロックが取得できない場合に一定時間待機する点が異なります。制限時間以内に、 false を返します。ロックが最初に取得された場合、または待機中に取得された場合は true を返します。
( 4) lockInterruptibly() メソッドは特別であり、このメソッドを通じてロックを取得する場合、スレッドがロックの取得を待機している場合、スレッドは割り込みに応答できます。つまり、スレッドの待機状態を中断できます。つまり、2 つのスレッドが同時に lock.lockInterruptibly() を通じてロックを取得したいとき、この時点でスレッド A がロックを取得し、スレッド B が待機しているだけであれば、 threadB.interrupt() メソッドは次のようになります。スレッド B で呼び出されます。スレッド B の待機中のプロセスに割り込むことができます。
2.例
trylock を例に挙げます。
ロックロック = ...; if(lock.tryLock()) { 試す{ //タスクの処理 }catch(Exception ex){ }ついに{ lock.unlock(); //ロックを解除します } }それ以外 { //ロックを取得できない場合は、他のことを直接実行します}
Java インターフェースには、スレッド使用時の直接呼び出しを容易にするメソッドが多数保存されています。ロック インターフェイスは誰もがよく知っており、その概念についてはすでに予備的に理解しています。したがって、ロックを取得する方法はまだ明確ではないはずです。
上記は Java でのロック取得の 4 つの方法です。この記事を読んだ後、この分野の記憶と理解を強化することができます。他のロック取得方法に興味がある場合は、授業後に練習用の関連コードも見つけることができます。