ホームページ  >  記事  >  Java  >  Javaでロックを取得するにはどのような方法がありますか?

Javaでロックを取得するにはどのような方法がありますか?

王林
王林転載
2023-05-19 13:13:061948ブラウズ

1. 取得メソッド

lock()、tryLock()、tryLock(long time, TimeUnit単位)、lockInterruptibly()はすべてロックの取得に使用されます。

(1) lock() メソッドは最も一般的に使用されるメソッドであり、ロックを取得するために使用されます。ロックが別のスレッドによって取得されている場合は、待機します。

(2) tryLock() メソッドには戻り値があり、ロックの取得を試行するために使用されることを意味します。取得が成功すると、true が返されます。取得が失敗した場合 (つまり、別のスレッド取得によってロックが取得された場合)、 false が返されます。これは、このメソッドが何があってもすぐに戻ることを意味します。ロックができないときにそこで待つ必要はありません。

(3) tryLock(long time, TimeUnit単位) メソッドは tryLock() メソッドに似ていますが、唯一の違いは、このメソッドは、処理できない場合に 一定時間待機することです。 get the lock 、制限時間内にロックを取得できない場合は false が返されます。ロックが最初に取得された場合、または待機中に取得された場合は true を返します。

(4) lockInterruptibly() メソッドは特殊で、このメソッドでロックを取得する際、スレッドがロックの取得を待機している場合、スレッドは割り込みに応答できます。スレッドの待機状態。 つまり、2 つのスレッドが同時に lock.lockInterruptibly() を通じてロックを取得したい場合、この時点でスレッド A がロックを取得し、スレッド B が待機しているだけであれば、threadB.interrupt が呼び出されます。 () メソッドは、スレッド B の待機中のプロセスに割り込むことができます。

2. 例

trylock を例に挙げます。

rree

以上がJavaでロックを取得するにはどのような方法がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。