Java Multithread Nyuumon: Concurrency Latest API covered (Japanese Edition) Buy on Amazon

https://www.ebooknetworking.net/books_detail-B00X84ZEEW.html

Java Multithread Nyuumon: Concurrency Latest API covered (Japanese Edition)

Book Details

ISBN / ASINB00X84ZEEW
ISBN-13978B00X84ZEE4
Sales Rank2,645,283
MarketplaceUnited States  🇺🇸

Description

集積回路の技術の進展状況をみますと、2005年の段階でCPUのクロック数の上昇は頭打ちになったと言っても差し障りないでしょう。反面、マルチコアCPUが主流となり、18ヶ月で処理能力(正確にはトランジスタ数)が倍となるというムーアの法則は現在進行中で継続しています。

2013年、Sparc T5のプロセッサーは8ソケットで最大同時処理スレッド数は1019、2012年、Intel Xeon Phi 5110Pは1チップ・60コアで4つの並行スレッド(240スレッド)をサポートして価格は50万円程度(2015年時点のIntelホームページ希望カスタマー価格は$2500USD)でした。近い将来に、安価な端末で数百〜数千のスレッドを並列して処理することは十分に実現可能と見られています。

従来のシングルスレッドのJavaアプリケーションが数年待てば速度向上する時代は終わり、反対にマルチスレッド化したアプリケーションに対して相対的に数百〜数千倍も遅くなってしまいます。

Javaのプログラミングにおいても分散・並列処理は少なくとも海外では一般的となりつつあり、マルチスレッドはエンタープライズアプリケーションのアーキテクトにとって欠かすことができない必須スキルと言えます。本書ではマルチスレッド技術の最新動向と、昔ながらのレガシー技術も含めて解説していきます。

内容

本書ではCore Java APIの同期機構、リエントラント・ロック等の旧技術を皮切りに、Fork/Joinフレームワーク、STM、メッセージパッシング並行処理(Actor Model)などの新技術を広範にカバーしつつ、マルチコア、マルチプロセッサーを意識した開発の解説をします。

本書を効果的に使うには

本書は七部構成とさせて頂いております。

第一部の「Javaスレッドの問題点」は、Javaのメモリーモデルがどのように問題を起こすか考察します。

第二部の「スレッドの基本概念」ではスレッドセーフや並行性・並列性、その他の基本概念について解説します。スレッドプログラミングをする技術者が心がける点や、現在・未来の技術的進展を技術者としてどう見るべきかも考察します。

第三部の「Javaスレッドの実装へ」では、synchronizedキーワード、waitやnotify等の古いAPIを使ったスレッドプログラミングから、さほど古くはないが最新でもないconcurrentパッケージのReentrantロック、Synchronizersをご紹介します。

第四部の「タスクと並行処理」ではExecutorインターフェース、スレッドプール、BlockingQueue等の解説をしていきます。

第五部は「スレッドセーフ・コレクション」の実装の解説をします。

第六部のトピックは「分割統治法」です。Fork/Joinフレームワークの活用方法の考察をします。

第七部のトピックは「ロックレス並行処理」です。Akkaフレームワークを使い、STMとアクターモデル実装の解説をします。

付録では、参考知識としてデザインパターンとプログラミング面接の問題の解説をします。(注:内容は若干古いものになっています。)

読者のバックグランドについては、Javaアプリケーション開発経験者がメインのターゲットとなります。ただし、並行・並列処理については深い知識は必要としていませんので、Core Javaをある程度嗜んでいる学生や、独学をしているハッカーでも、本書を有効に使うことができるはずです。開発環境は2015年現在最新のEclipseを前提としています。

サンプルのソースコードからはライブラリーのインポート文を割愛させて頂いておりますので、そのままコピーしてもエラーが表示されます。エラー部分についてはオートコンプリート機能を使えば、インポートの行をEclipseが自動で追加してくれます。

また、Akkaの開発環境設定についてはMavenの編集をできる方であれば、数十行の編集ですぐにでも最新のアクターモデルを使い並列処理の開発ができるようになります。Mavenプロジェクトをどうしても使いたくない方や、使えない事情がある方については、Akkaの公式サイトのアーカイブよりjarファイルをダウンロードしてクラスパスに追加すれば開発環境は整います。詳細については、Akkaを解説する段階になりましたら説明します。

Java並行処理 1
著者 2
はじめに 6
Javaスレッドの問題点 8
Java Memory Model(JMM) 11
volatile修飾子 12
競合状態 12
Atomic変数 13
不変性(immutability) 14
局所性(locality、ThreadLocal) 15
スレッドの基本概念 16
スレッドセーフの概念 16
デザイン・アーキテクチャパターン 17
並行性と並列性の概念 17
イントリンシック・ロック(Intrinsic Lock) 18
Javaスレッドの実装へ 20
JVMが指定するスレッドの状態 22
排他制御:Synchronized 23
リエントラント・ロック 26
ロックのタイムアウト 27
ReentrantLockの実装 27
Synchronizedとリエントラントロックの比較 30
Synchronizers:同期の管理ツール 33
Semaphore 33
CyclicBarrier 33
Phaser 37
CountDownLatch 39
タスクと並行処理 41
BlockingQueueとスレッドプール 42
Executorインターフェース 44
リジェクションポリシー 45
RejectedExecutionHandler 47
Callable, Future 48
スレッドセーフ・コレクション 50
スレッドセーフ・キャッシュの実装 51
分割統治法 55
ForkJoin Framework 55
ForkJoinPool 56
ForkJoinTask 57
RecursiveAction 57
RecursiveTask 58
マージソート 59
ロックレス並行処理 62
Akka 63
環境設定 65
STM(Software Transactional Memory) 68
STM:フォールトトレラント 70
STM:データ構造 72
Akka:アクターモデル 76
Akka:アクターモデルの基本 77
Akka:アクターモデルの実装 79
アクターモデル:フォールトトレラント 81
Akka+STM 85
アクターモデルの展望 85
付録1 デザインパターン 86
Producer Consumer デザインパターン 86
Factory デザインパターン 90
Double-Check Locking デザインパターン 90
付録2 マルチスレッド面接問題集 92
プロセスとスレッドの違い 92
Javaのプログラムは最低何個のスレッドを持つか 92
コンストラクターは同期できるか 92
現在のスレッドにアクセスしてスレッド名を確認する方法 92
Javaのスレッドが持つ状態(States) 92
スレッドの優先順位をつけるには 92
start()メソッドを2回使うことは可能か 92
想定していないビジーウェイトを防止するには 93

More Books by Komatsu Masaki

Donate to EbookNetworking
Prev
Next