multi thread 2

Immutable パターン

Immutable: 不変の, 変わることがない

インスタンス生成後,状態が全く変わらないクラスがあったとする.このクラスのメソッドは複数のスレッドから同時にアクセスされても大丈夫.

Immutableパターンでは例えばクラスをfinal宣言したりフィールドもfinal宣言されたものが挙げられる.

ちなみに,finalの意味はクラス,メソッド,フィールドのそれぞれで微妙に意味が異なってくる.

  • finalクラス:そのクラスは拡張できない.サブクラスが作れないので,finalなクラスで宣言されているメソッドはoverrideされない
  • finalメソッド:そのメソッドはサブクラスのメソッドでoverrideできない.
  • finalフィールド:一度しか代入できない

setterメソッドがなく,インスタンスの状態が決して変わらないならば,インスタンスをsynchronizedで守る必要もない.

また,リファクタリングの場合でもmutableな箇所とimmutableな箇所を分割して,パフォーマンスを上げることが考えられる.

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中