2016-07-07 14 views
1

Javaモニターとsynchronizedキーワードの違いを理解するのに問題があります。Javaのモニターと同期キーワード

私はJavaで、すべてのクラスは基本的にモニターです。

monitor BankAccount{ 
    double balance;  

    public void withdraw(){} 

    public void deposit(){} 

} 

このクラスのすべてのメソッドを同期させるか、キーワードを指定する必要がありますか?

+0

おそらく、https://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html – Marichyasana

+0

は、monitorがJavaのキーワードではないため、有効なクラス宣言ではありません。 –

+0

オブジェクトにはモニターがありますが、クラスはモニターではありません。メソッドを同期させるには、それぞれのメソッドでキーワードを使用する必要があります。注:2つのアカウントをロックするには、デッドロックを避けるために慎重に行う必要があります。 –

答えて

3

モニタは、Javaのすべてのオブジェクトインスタンスに関連付けることができます。これにはClassオブジェクトが含まれます。しかし、キーワードmonitorはありません。モニタは、​​と宣言されたオブジェクト上でメソッドが呼び出されたとき、または明示的な​​ブロックが使用されたときに同期されます。静的メソッドは、クラスタイプを表すClassオブジェクトに関連付けられたモニターで同期します。

2

monitorは、キーワードです。デフォルトでは何も同期されません。同期させる方法(または他のロックメカニズムを明示的に使用する方法)では、​​というキーワードが必要ですが、自動的には発生しません。

関連する問題