Java 同時実行ロック メカニズムにより、マルチスレッド環境では共有リソースに 1 つのスレッドのみがアクセスできるようになります。その種類には、悲観的ロック (ロックを取得してからアクセスする) と楽観的ロック (アクセス後に競合を確認する) があります。 Java は、ReentrantLock (ミューテックス ロック)、Semaphore (セマフォ)、ReadWriteLock (読み取り/書き込みロック) などの組み込み同時実行ロック クラスを提供します。これらのロックを使用すると、複数のスレッドが共有変数カウンターに同時にアクセスしたときに、1 つのスレッドだけがその値を更新するなど、共有リソースへのスレッドセーフなアクセスを保証できます。
#Java マルチスレッド同時実行ロックの詳細な説明
はじめに
マルチスレッド環境では、複数のスレッドが共有リソースに同時にアクセスし、データの不整合やプログラム エラーが発生する可能性があります。これを防ぐために、Java は同時実行ロック メカニズムを提供し、一度に 1 つのスレッドだけが共有リソースにアクセスできるようにします。同時実行ロックのタイプ
Java には、次の 2 つの主なタイプの同時実行ロックがあります。Java の同時実行ロック
Java では、次の組み込み同時実行ロック クラスが提供されます:実際的なケース
共有変数counter に同時にアクセスする 2 つのスレッドがあり、次のことを確認したいとします。一度にスレッドは 1 つだけです。
counter の値を更新します。
ReentrantLock を使用してこれを実現できます:
public class Counter { private int counter; private ReentrantLock lock = new ReentrantLock(); public int getCounter() { lock.lock(); try { return counter; } finally { lock.unlock(); } } public void incrementCounter() { lock.lock(); try { counter++; } finally { lock.unlock(); } } }
getCounter() メソッドと
incrementCounter() メソッドの両方で ## を使用します。 # lock
を使用して、counter
へのアクセスがスレッドセーフであることを確認します。
以上がJava マルチスレッド同時実行ロックの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。