java のマルチスレッドでオブジェクトをロックするにはどうすればよいですか?
Javaでは、synchronizedキーワードを利用してオブジェクトをロックすることができます。主な方法は2種類あります。
- 連携
- 同期処理され
public synchronized void method() {
// 在这里编写需要加锁的代码
}
- 同期をとる
- 同期的
synchronized (object) {
// 在这里编写需要加锁的代码
}
上記のコードでは、objectがロックする対象のオブジェクトで、objectオブジェクトのロックを取得したスレッドのみがそのコードブロックを実行可能です。
1 つのオブジェクトに対して複数のスレッドが同時にアクセスする場合、1 つのスレッドだけがオブジェクトのロックを獲得でき、他のスレッドはロックを取得したスレッドが処理を完了してロックを解放するまでブロックされます。これにより、マルチスレッド環境で共有リソースへ安全にアクセスできます。