Java並行処理プログラミングまとめ - 感想・はじめに

Java並行処理プログラミングがついに復刊されましたね!僕も図書館から借りて読みはしたんですが手元に置いておきたい一冊だったのですごく待ってました><
というわけで別に復刊記念というわけではありませんがいい機会なので宿題が溜まりすぎないうちに少しでも消化しようとJava並行処理プログラミングを読んだ感想やまとめです。

感想

タイトル通り書いてあるコードは全てJavaですしJVMなどJavaに偏った部分もありますが、内容としては並行処理プログラミング自体についての基礎知識から高度な知識までを段階的に解説されてあります。また、問題を解決する方法もいきなりこのAPIを使えばOKと紹介するのではなく、オブジェクトの作り方・組み合わせ方から説明した後にJavaなら既にこういったAPIがありますと紹介していますので、こういった作り方・組み合わせ方の知識は他言語にも流用できると思います。その際に注意するべき点などは言語に限った話ではないと思いますので並行処理について勉強したい方には一度は読むようにオススメしたい本だと思いました。

第1章 はじめに

下記以外には最初の方に並行処理プログラミングが行われるようになった歴史とか、最後の方には既存のスレッドが利用されているものの紹介とかが書いてあったよ!

スレッドの利点
マルチプロセッサの有効利用
せっかくマルチプロセッサが普及し始めたんだし有効に活用しなきゃね!シングルスレッドだと同期的I/Oがあったらただ待つだけで無駄になっちゃうよ!
設計の単純化
並行処理がうまく扱えるようになったら1スレッド1タスクに分解できて設計が単純に!例:サーブレットRMIフレームワーク
非同期イベントの処理を単純化
マルチスレッドだとシングルスレッドで面倒だった事が簡単に!同期I/OをノンブロッキングI/Oに変えなくて済む!
応答性の良いユーザインタフェイス
GUI表示と内部処理それぞれにスレッドを割り当てるだけで応答性が良くなる!ユーザ入力のポーリングとかしなくていい!
スレッドのリスク
安全性の危機
同期化が不適切だと複数のスレッドがランダムなタイミングで処理するので、タイミングによってはデータに不整合が発生する可能性
生存の危機
デッドロック・飢餓状態・ライブロックなど並行処理ならではのエラーによるプログラムの停止の可能性
実行性能の危機
コンテキストスイッチによるオーバヘッドの発生などによる実行性能の低下の可能性


この記事が少し寂しいことになりましたが部ごとにわけたいと思いましたのでわけました。
続きはこちらです↓
Java並行処理プログラミングまとめ - 第1部 基礎編 - Akinekoの日記