しんのすけWiki
デザインパターン マルチスレッド編
最終更新:
shinsa
-
view
デザインパターン マルチスレッド編
テキストはこちら。
Java言語で学ぶデザインパターン入門【マルチスレッド編】 結城 浩著 ソフトバンクパブリッシング(株) ISBN 4-7973-1912-7
目次
内容 (読んだところを記録)
Introduction 1 スレッドの協調
Javaにはsynchronized宣言とブロックがある。synchronizedブロックに入る際には該当インスタンスのロックを獲得する必要がある。
また各インスタンスはウェイトセットを持ち、wait(), notify()などを用いて排他制御を行う。また、スレッドの状態遷移について。
また各インスタンスはウェイトセットを持ち、wait(), notify()などを用いて排他制御を行う。また、スレッドの状態遷移について。
Introduction 2 マルチスレッドプログラムの評価基準
安全性、生存性 (liveness)、再利用性、パフォーマンス
第1章 Single Threaded Execution
SharedResourceを守るため、その状態を変更するメソッドの同期を取るパターン。マルチスレッドプログラミングの基本形。
- どんなときに使うのか
- Livenessとデッドロック
- 再利用性と継承異常
- クリティカルセクションの大きさとパフォーマンス
補講: synchronizedについて考える
第2章 Immutable
クラスインスタンスを一度生成した後では状態が変更できないとき、同時に複数のスレッドからアクセスしても安全であるというパターン。
- どんなときに使うのか
- 不変性を守るために [再利用性]
- 標準クラスライブラリで使われているImmutableパターン
補講: final
付録B Javaのメモリモデル
Javaはメインメモリと、スレッド毎にワーキングメモリを持つ。各スレッドは必要に応じてメモリ間のコピーを行う。synchronizedブロックへの入退出時にはメインメモリへの強制的な書き出しが行われる。この動作を正しく理解しないことによりマルチスレッドでは動作しないプログラムを書く危険性がある。
付録C Javaスレッドの優先度
付録D スレッド関連の主要API
付録E サンプルプログラムの実行手順
付録F 参考文献
-