Monthly Archives: 1月 2011

「Java並行処理プログラミング」第34回(1月28日)

Posted on by 0 comment

参加者 沼田(読み手)、今井(記)
範囲 pp. 371 – 381

第IV部 高度な話題

第15章 アトミック変数とノンブロッキング同期化

  • 15-4 ノンブロッキングアルゴリズム
    • 15-4-2 ノンブロッキングな連結リスト
      • p.372 l.7
        ‘sentinel’はプログラミングの世界では普通“歩哨”ではなく“番兵” だよね。
    • 15-4-3 アトミックなフィールドアップデータ
      • p.375 下からl.8 ミススペル
        CoucurrentLinkedQueue → ConcurrentLinkedQueue
    • 15-4-4 ABA問題
      • p.376 下からl.6
        AtomicStampedReferenceとAtomicMarkableReferenceの従兄弟の関係ってどんな関係だろう? 親の親が同じクラス?
        → 実際はどちらも、java.lang.Objectのサブクラスでした。
  • まとめ

第16章 Javaのメモリモデル

  • 16-1 メモリモデルとは何か? なぜ必要か?
    • 16-1-1 プラットホームのメモリモデル

「Java並行処理プログラミング」第33回(1月25日)

Posted on by 0 comment

参加者 今井(読み手)、沼田(記)
範囲 pp. 360 – 371

第IV部 高度な話題

第15章 アトミック変数とノンブロッキング同期化

  • 15-2 ハードウェアの並行性サポート
    • 15-2-1 compare and swap(比較して入れ替える)
      • 1文目の命令の前の括弧は不要
        …コンペア・アンド・スワップ命令(以下CASと略記)…
    • 15-2-2 ノンブロッキングなカウンター
    • 15-2-3 JVMのCASサポート
  • 15-3 アトミック変数クラス
    • 15-3-1 “ベターな揮発性変数”としてのアトミック変数
    • 15-3-2 実行性能の比較:ロックvs.アトミック変数
  • 15-4 ノンブロッキングアルゴリズム
    • 15-4-1 ノンブロッキングスタック

「Java並行処理プログラミング」第32回(1月18日)

Posted on by 0 comment

参加者 沼田(読み手)、今井(記)
範囲 pp. 354 –360

第IV部 高度な話題

第14章 カスタムシンクロナイザを構築する

  • 14-6 java.util.concurrentのシンクロナイザクラスの中のAQS
    • 14-6-2 SemaphoreとCountDownLatch
      • p.354 List 14-16
        • tryAcquireShared()の型はなぜbooleanでなくintなのだろう?
          AQS APIをみると、三つ表現しているようです。
          負: 失敗
          0: 排他的に成功
          正: 非排他に成功
        • tryReleaseShared()はtrueしか返さないので、型はvoidでも良いのでは?
          AQSではbooleanで定義されている。実装によってはtryReleaseShared()がfalseを返すこともあり、List 14-16のSemaphoreの実装ではfalseを返すことがないだけ。
    • 14-6-3 FutureTask
    • 14-6-4 ReentrantReadWriteLock
  • まとめ

第15章 アトミック変数とノンブロッキング同期化

  • 15-1 ロックの不利な点
  • 15-2 ハードウェアの並行性サポート

「Java並行処理プログラミング」第31回(1月14日)

Posted on by 0 comment

参加者 今井(読み手)、沼田(記)
範囲 pp. 342 – 353

第IV部 高度な話題

第14章 カスタムシンクロナイザを構築する

  • 14-2 条件キューの使い方
    • 14-2-6 サブクラスの安全性の問題
    • 14-2-7 条件キューをカプセル化する
    • 14-2-8 入り口と出口のプロトコル
  • 14-3 明示的な条件オブジェクト
    • 明示的なLockはLockインタフェースの実装のことだから英字で書かれているのだろう
  • 14-4 シンクロナイザの解剖学
    • List 14-12 のrelease()メソッドはブロックしないからInterruptedExceptionはthrowしないのだろう
  • 14-5 AbstractQueuedSynchronizer
    • 14-5-1 簡単なラッチ
  • 14-6 java.util.concurrentのシンクロナイザクラスの中のAQS
    • 14-6-1 ReentrantLock

「Java並行処理プログラミング」第30回(1月7日)

Posted on by 0 comment

参加者 沼田(読み手)、今井(記)
範囲 pp. 333 – 342

第IV部 高度な話題

第14章 カスタムシンクロナイザを構築する

  • 14-1 ステート依存を管理する
    • 14-1-3 条件キューが助けてくれる
      • p.333 14-1-3 l.2
        それはトースターが焼けたという → それはトーストが焼けたという ???
        一行上のトースターの“パンが焼けましたよ”の合図のベル
        は、原書では、the “toast is ready” bellなので、
        ここのyour toast is ready
        それはトースターが焼けたという → それはパンが焼けたという
        が適当だと思う。
  • 14-2 条件キューの使い方
    • 14-2-1 条件述語
    • 14-2-2 早すぎるウェイト終了
    • 14-2-3 シグナル喪失
    • 14-2-4 通知
    • 14-2-5 例:ゲートクラス