2012年8月6日月曜日

Java並行処理プログラミング1

【単一不可分(アトミック)】
 単一の操作で不可分なので、その操作は分けられません。
以下は、アトミックでは無い操作。
①read-modify-write
②check-then-act
①は、index++みたいなやつ。

この操作は、実際には以下の3つの操作をしています。

1、indexの値を取得
2、値を書き換え(1加算)
3、indexに書き込みます。

このように、複数回の操作をすることは、単一不可分では無いと言います。
じゃあ、どうするの?というと、単純に言えば同期すれば、この1、2、3が 1回の操作として実行されます。
これを単一不可分な操作という。つまり、アトミックです。

【逸出】 公開すべきでは無いオブジェクトが公開される事。

【不可変】 オブジェクトが不可変であるとは、、、
→コンストラクション後、ステートの変更ができない
→すべてのフィールドがfinalで、コンストラクション時にthis参照が逸出しない
という事です。
余談(?)ですが、コンパイラが最適化をすると、同期しないと実行順序が意図しない順序に変わる可能性があります。

0 件のコメント:

コメントを投稿