レビュー:Java 7同時実行性クックブック
60を超える例を含むJava
7 Concurrency Cookbookは、Javaでマルチスレッドプログラミングを行う方法を示しています。 It shows varies threading topics from beginner level to advanced level, including thread management like create, interrupt and monitor thread, using Java 5 Executor
frameworks to run or schedule threads, and the latest Java 7 fork/Join
Frameworks to distribute threads.
私のお気に入りは第3章で、一般的な同時メカニズムまたはパターンの5つの例、「Semaphores」、「CountDownLatch」、「CyclicBarrier」、「Phaser」、「Exchanger "、およびこれらのメカニズムが既存のスレッドの問題をどのように解決するか。 さらに、この章の最後で、EclipseとNetBeanの両方でJava並行コードをテストする方法を示したことに驚きました。
この本から何を学ぶかを知るには、次のセクションをご覧ください。
第1章:スレッド管理
Hello worldの章には、スレッド管理の基本を示すための多くの便利な例があります。
スキルが学ばれます:
-
スレッドを作成、中断、スリープ、および再開する方法。
-
デーモンスレッドのプログラム方法。
-
スレッド例外を処理する方法。
-
スレッドをグループにグループ化する方法。
第2章:基本的なスレッド同期
複数のスレッドが同じデータ、ファイル、またはデータベース(共有リソース)を読み書きする方法を制御するスレッド同期、
スキルが学ばれます:
-
synchronized
キーワードを使用して、メソッドを同期する方法。 -
Lock
インターフェースとその実装を使用して、コードのブロックを同期する方法。 -
wait()
、notify()
、およびnotifyAll()
を使用して、同期されたコードで単一/複数の条件を実行する方法。
第3章:スレッド同期ユーティリティ
複数のスレッドを同期する5つの一般的な並行メカニズムまたはパターンと、それが解決する問題を示す例。
スキルが学ばれます:
-
Semaphores –1つ以上の共有リソースへのアクセスを制御するカウンター。
-
CountDownLatch –スレッドが複数の操作の終了を待機できるようにします。
-
CyclicBarrier –共通ポイントで複数のスレッドの同期を許可します。
-
Phaser –フェーズに分割された並行タスクの実行を制御します。
-
Exchanger –2つのスレッド間のデータ交換のポイントを提供します。
第4章:スレッド実行プログラム
Java 5、Executorフレームワークの操作方法–Executor
、ThreadPoolExecutor
など。 指定された時間または間隔で単一または複数のスレッドを実行するスケジューラのようなものです。
スキルが学ばれます:
-
スレッドエグゼキューターを作成する方法
-
遅延後にタスクを実行する方法。
-
定期的にタスクを実行する方法。
-
タスクの終了またはキャンセルを制御する方法。
第5章:フォーク/結合フレームワーク
スキルが学ばれます:
-
Java 7 Fork / Join Frameworkとは何か、そして簡単なHello Worldの例。
-
分割されたタスクの結果を結合する方法。
-
タスクをキャンセルする方法。
第6章:コンカレントコレクション
並行プログラミングで使用されるJavaコレクションを紹介します。
スキルが学ばれます:
-
ブロックおよび非ブロックコレクションとは何ですか。
-
ブロッキングおよびノンブロッキングスレッドセーフリストの使用例。
-
ConcurrentNavigableMap
の例。 -
ThreadLocalRandom
で同時乱数を生成する方法。 -
アトミック変数の使用方法–例:
AtomicLong
、およびアトミック配列–例:AtomicIntegerArray
。
第7章:同時実行クラスのカスタマイズ
この章では、ニーズに合わせて既存の並行性クラスをカスタマイズする方法を示します。 多くの場合、これは必要ありませんが、知っておくと便利です。
スキルが学ばれます:
-
優先度ベースの
Executor
クラスの実装 -
ThreadFactory
の使用方法。 -
スケジュールされたスレッドプールおよびフォーク/結合フレームワークで実行されるタスクのカスタマイズ。
-
カスタム
Lock
クラスを実装する方法。 -
独自のアトミックオブジェクトを実装する方法。
第8章:並行アプリケーションのテスト
この章では、並行プログラムでテストする方法を示します。
スキルが学ばれます:
-
Lock
、Phaser
、Executor
フレームワークおよびフォーク/参加プールを監視する方法。 -
同時実行コードをデバッグするためのEclipseおよびNetBeansの構成方法。
-
FindBugsを使用して並行コードを分析する方法
結論
この本には、わかりやすい例が数多く含まれており、各例の最後に説明があります。ただし、理解するには数年にわたるスレッド化の背景が必要な第6章と第7章を除きます。 Javaでのスレッド化を学びたい初心者の場合、「http://www.amazon.com/gp/product/1849687889/ref=as_li_tf_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1849687889&linkCode=as2&tag=progrlife-20[Java 7 Concurrency Cookbook]」は、勉強するのに最適な本です。 経験豊富な開発者にとっては、これを「Java同時実行性」の完全なリファレンスとして扱うこともできます。
従来のJava Concurrency in Practiceと比較するとどうなりますか? I think both books are targeted for different developer level. IMHO, the classic “Java Concurrency in Practice” is for advanced level, its snippet code is followed by a few pages of explanations is great, but not suitable for anyone. And this Java 7 Concurrency Cookbook is for beginner and immediate level, the example is easy to understand and ready to modify for your project use.
Note
このJava 7同時実行クックブックは、amazon.comまたはpacktpub.comを介してオンラインで購入できます。