私はある状態を持つクラスのオブジェクトを持っています。 このオブジェクトには2つの方法(method1()
およびmethod2()
)があり、両方ともobj
の状態が変更されています。 method1()
は同期されていますが、method2()
は同期されていません。クラスレベルの同期化はどのようにJavaに実装されていますか?
今2つのスレッド、スレッド1とthreads2アプローチオブジェクト - > を同期さmethod1()
を呼び出しthreads1 - >同期化されていないmethod2()
を呼び出すスレッド2。
私のテスト結果で見つかったのは、がロックを保持していても、method2()
が正しく実行されていたことです。しかし、synchronizedキーワードをメソッドに置くことによって、オブジェクト全体でロックが取得された場合、実行可能なメソッドがいくつあるか考えました。それは待つべきです。
あなたの意見は高く評価されます。
あなたは間違っていました。 'method2'は同期されていないので、ロックを獲得しようとはしません。これはロックがすでに' method1'によって獲得されていればブロックされます。 – Kayaman
いくつかのコードは良いでしょう。 –
@ケイマン私は今私のために働いていることがわかりました。ありがとう –