Javaで同期化されたオブジェクトはどのように使用されますか?
Javaでは、synchronizedキーワードを使用してオブジェクトのメソッドやコードブロックを修飾し、オブジェクトの同期を実現できます。
- 装飾方法:
public synchronized void method() {
// 同步的代码
}
上記の例では、synchronizedというキーワードでメソッドを修飾しました。これにより、メソッドは同時に1つのスレッドでのみ実行され、他のスレッドは現在の実行スレッドの実行が完了するまで待機する必要があります。
- コードブロックのスタイルを設定する:
public void someMethod() {
// 非同步的代码
synchronized (lock) {
// 同步的代码
}
// 非同步的代码
}
上記の例では、synchronized 关键字でコードブロックを修飾し、オブジェクトをロックとして指定しました。そのロックを獲得したスレッドだけが同期ブロックを実行でき、他のスレッドはそのロックが解放されるまで待ち続ける必要があります。
オブジェクトが異なるインスタンスであっても、同期をかけるオブジェクトはオブジェクト単位なので、互いに影響を与えず、個別にロックされることに注意してください。クラスのすべてのインスタンスに対して同期をかける場合は、メソッドまたはコードブロックに static 修飾子を付けることで実現することができます。