2

Java Concurrency in Practiceの 17 ページから読み始めたところです。

これまで、「スレッドセーフなクラス」と「スレッドセーフなプログラム」という用語をほぼ同じ意味で使用してきました。スレッドセーフなプログラムは、完全にスレッドセーフなクラスで構成されていますか? 必ずしもそうとは限りません。完全にスレッド セーフなクラスで構成されるプログラムはスレッド セーフではない可能性があり、スレッド セーフなプログラムにはスレッド セーフではないクラスが含まれる場合があります。

  • スレッドセーフでないクラスをスレッドセーフプログラムにどのように含めることができますか? 追加のコード例をいただければ幸いです。
4

2 に答える 2

5

それが可能な 2 つの基本的なケースがあります。

  1. スレッドセーフでないオブジェクトは、個々のスレッドに限定されます。

  2. スレッドセーフでない共有オブジェクトへのアクセスは、それらを使用するスレッドによって外部的に調整されます。非常に単純な例: すべてのアクセスを

        synchronized( sharedObject ) {
            sharedObject.access();
        }
    
于 2013-08-24T23:52:04.000 に答える