1

次のコードがあると仮定します。

final Catalog catalog = createCatalog();

for (int i = 0; i< 100; i++{
    new Thread(new CatalogWorker(catalog)).start();
}

「Catalog」はオブジェクト構造であり、メソッド createCatalog() と「Catalog」オブジェクト構造は並行性を考慮して作成されていません。製品カタログ内にはいくつかの非最終的で揮発性のない参照があり、変更可能な状態さえあるかもしれません (ただし、これ処理する必要があります)。

私がメモリモデルを理解している方法では、このコードはスレッドセーフではありません。安全にする簡単な方法はありますか?(この問題の一般化されたバージョンは、実際には、スレッドが爆発的に動作する前に作成される共有構造のシングルスレッド構築に関するものです)

4

3 に答える 3