Javaモニターとsynchronizedキーワードの違いを理解するのに問題があります。Javaのモニターと同期キーワード
私はJavaで、すべてのクラスは基本的にモニターです。
monitor BankAccount{
double balance;
public void withdraw(){}
public void deposit(){}
}
このクラスのすべてのメソッドを同期させるか、キーワードを指定する必要がありますか?
Javaモニターとsynchronizedキーワードの違いを理解するのに問題があります。Javaのモニターと同期キーワード
私はJavaで、すべてのクラスは基本的にモニターです。
monitor BankAccount{
double balance;
public void withdraw(){}
public void deposit(){}
}
このクラスのすべてのメソッドを同期させるか、キーワードを指定する必要がありますか?
モニタは、Javaのすべてのオブジェクトインスタンスに関連付けることができます。これにはClass
オブジェクトが含まれます。しかし、キーワードmonitor
はありません。モニタは、と宣言されたオブジェクト上でメソッドが呼び出されたとき、または明示的なブロックが使用されたときに同期されます。静的メソッドは、クラスタイプを表すClass
オブジェクトに関連付けられたモニターで同期します。
monitor
は、キーワードです。デフォルトでは何も同期されません。同期させる方法(または他のロックメカニズムを明示的に使用する方法)では、というキーワードが必要ですが、自動的には発生しません。
おそらく、https://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html – Marichyasana
は、monitorがJavaのキーワードではないため、有効なクラス宣言ではありません。 –
オブジェクトにはモニターがありますが、クラスはモニターではありません。メソッドを同期させるには、それぞれのメソッドでキーワードを使用する必要があります。注:2つのアカウントをロックするには、デッドロックを避けるために慎重に行う必要があります。 –