増補改訂版
Java言語で学ぶ
デザインパターン入門
マルチスレッド編

結城浩

本書は、マルチスレッドと並行処理を学ぶ入門書です。

本書では、Javaのスレッドの基本から書き起こし、 マルチスレッドプログラミングによく登場するパターンを解説します。

本書を通して、マルチスレッドと並行処理に関する理解を深め、 よく使われる技法を身につけましょう。

Amazon

目次


想定読者

本書は、こんな方へおすすめです。

  • Javaのマルチスレッドプログラミングに興味を持っている人
    • Javaのスレッドについて、きちんと学びたい
    • synchronizedって、どういうときに、なぜ書くのか、ちゃんと理解したい
    • マルチスレッドプログラミングで何が問題になるのか、なぜ難しいかを把握したい
    • スレッドの間で情報をやりとりする方法について学びたい
    • スレッドを使ってパフォーマンスアップする方法について学びたい
    • Swing(JFC)とスレッドの関係について要点を学びたい
  • デザインパターンに興味を持っている人
    • GoF以外のパターンを学んでみたい
    • マルチスレッドプログラミングをパターンの観点から学んでみたい
    • 小さなパターンが組み合わされて、大きなパターンを生み出すのを見てみたい


本書の目次

  • 『増補改訂版Java言語で学ぶデザインパターン入門マルチスレッド編』
  • 結城浩 著
  • ソフトバンククリエイティブ刊
  • ISBN4-7973-3162-3
  • 価格4700円(税抜)
  • 720p
  • はじめに
  • UMLについて
  • Introduction
    • Java言語のスレッド
    • マルチスレッドプログラムの評価基準
  • パターン
    • Single Threaded Execution - この橋を渡れるのは、たった一人
    • Immutable - 壊したくとも、壊せない
    • Guarded Suspension - 用意できるまで、待っててね
    • Balking - 必要なかったら、やめちゃおう
    • Producer-Consumer - わたしが作り、あなたが使う
    • Read-Write Lock - みんなで読むのはいいけれど、読んでる間は書いちゃだめ
    • Thread-Per-Message - この仕事、やっといてね
    • Worker Thread - 仕事が来るまで待ち、仕事が来たら働く
    • Future - 引換券を、お先にどうぞ
    • Two-Phase Termination - 後片付けしてから、おやすみなさい
    • Thread-Specific Storage - スレッドごとのコインロッカー
    • Active Object - 非同期メッセージを受け取る、能動的なオブジェクト
    • まとめ - マルチスレッドプログラミングのパターン・ランゲージ
  • 付録
    • 練習問題の解答
    • Javaのメモリモデル
    • Javaスレッドの優先度
    • スレッド関連の主要API
    • java.util.concurrentパッケージ
    • サンプルプログラムの実行手順
    • 参考文献
  • 索引


サンプルプログラムのダウンロード

本書のサンプルプログラムを以下からダウンロードできます。

アーカイブファイルを展開後、 readme.txtをお読み下さい。


誤りと訂正

誤りと訂正

(読者からの指摘、感謝します)
======================================================================
(2017-07-12)
p.168 : List 5-4: putメソッド中のメッセージ表示位置

    誤:
      System.out.println(Thread.currentThread().getName() + " puts " + cake);
      while(count >= buffer.length) {
          wait();
      }

    正:
      while(count >= buffer.length) {
          wait();
      }
      System.out.println(Thread.currentThread().getName() + " puts " + cake);

======================================================================
(2014-06-03)
p.314 : 12行目
    誤:戻り値はRealData型です。
    正:戻り値はString型です。

======================================================================
(2014-06-03)
p.395 : Fig.12-2
    図参照

======================================================================
(2014-06-03)
p.486 : List A2-4
    誤: 網掛けの位置が5-6行目
    正: 網掛けの位置が9-10行目

======================================================================
(2014-06-03)
p.562 : List A8-7
    誤: 網掛けの位置が4行目
    正: 網掛けの位置が3行目

======================================================================
(2014-06-03)
p.600: ◆解答1の直下の行末のResultの前にコンマが抜けている
    誤: ActivationQueue, MethodRequestResult,
    正: ActivationQueue, MethodRequest, Result,

======================================================================
(2009-02-07)
p.617 : 5行目から6行目
    誤: スレッドAはウエイトセットに入ります。
    正: スレッドAはウエイトセット(エントリセット)に入ります。

======================================================================
(2007-09-18)
p.528 : 問題6-4の解答
    誤: RetrieveThreadスレッドを100個起動し、
    正: RetrieveThreadスレッドを200個起動し、

======================================================================
(2007-05-02)
p.540 : List A7-7 : 6行目、余計な中括弧
    誤:System.out.println(" is balked."); {
    正:System.out.println(" is balked.");

======================================================================
(2006-04-21)
p.486 : List A2-4 : 網掛け位置
    誤:5, 6行目に網掛け
    正:9, 10行目に網掛け
======================================================================

フィードバック

フィードバックを送るフォーム

あなたのご意見やご感想をお送りください。

あなたの一言が大きなはげみとなりますので、どんなことでもどうぞ。

結城浩へのフィードバック

男性 (Male)   女性 (Female)

※上の情報は、いずれも未記入でかまいません。

All of the information above are optional.