Java Multithread Nyuumon: Concurrency Latest API covered (Japanese Edition)
Book Details
Author(s)Komatsu Masaki
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ã¯ï¼‘ãƒãƒƒãƒ—・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
2013å¹´ã€Sparc T5ã®ãƒ—ãƒã‚»ãƒƒã‚µãƒ¼ã¯8ã‚½ã‚±ãƒƒãƒˆã§æœ€å¤§åŒæ™‚処ç†ã‚¹ãƒ¬ãƒƒãƒ‰æ•°ã¯1019ã€2012å¹´ã€Intel Xeon Phi 5110Pã¯ï¼‘ãƒãƒƒãƒ—・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
