[java]Atomic*クラスのlazySetメソッド

2015年11月9日月曜日

Java マルチスレッド

JavaのAtomic*クラス群にlazySetというメソッドがあるけどなんだかよくわからなかった。ので、調べてみました。

APIリファレンスを見ても、
「指定された値に最終的に設定します。」
と書かれているだけで、通常のsetと何が違うのかよくわからない。

Java8 API仕様 http://docs.oracle.com/javase/jp/8/api/

以下に一応説明があるけど、結局どんな時に使うのか。。。

https://docs.oracle.com/javase/jp/8/api/java/util/concurrent/atomic/package-summary.html

結局、見つかったのはDoug Lea氏のコメント。

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6275329

もう他のスレッドが見る必要のない、削除されたオブジェクトにGCを促すためにnullを入れたいけど、
パフォーマンスのために同期したくないって時に使うみたい。
まあ、いつかnullが入ると。