Java のマルチスレッド アプリケーションにソフトウェア強制コピー オン ライトを追加することは可能ですか? これは、同じオブジェクトへの参照を持つ複数のスレッドを意味しますが、1 つのスレッドがそのオブジェクトを変更しようとすると、指定されたオブジェクトがコピーされ、そのコピーを指すように参照が調整されます。
3 に答える
2
私が知っている唯一の実装は
java.util.concurrent.CopyOnWriteArrayList
見る
http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/CopyOnWriteArrayList.html
および関連する Set クラス
java.util.concurrent.CopyOnWriteArraySet
そして最後に
org.apache.mina.util.CopyOnWriteMap
しかし、それはあなたの必要性に依存します。
于 2014-01-30T19:17:56.153 に答える
2
ご質問があれば、
Java ランタイム全体に対して全面的にコピー オン ライト動作を強制することは可能ですか?
答えは、
いいえ、Java にはそのような一般的な機能はありません。
実際、その目標に最も近いのは Clojure を使用することだと思います。そのデフォルトのデータ構造はすべて内部的にコピーオンライトであり、外部では単に不変オブジェクトです。
あなたが話している参照は、驚くべきことにref
s と呼ばれ、完全なメモリ内トランザクションをサポートしています。より単純な種類のリファレンスはatom
で、これはあなたの説明に 100% 適合します。
コア API 全体が、これらの構造をスレッドセーフでロックフリーな方法でエレガントかつ控えめに操作することに専念しています。
于 2014-01-30T19:20:49.030 に答える
1
はい。遅延コピーは簡単に実装できますが、通常は自分で行う必要があります。
于 2014-01-30T19:11:26.693 に答える