SlideShare a Scribd company logo
Effective Java 輪読会 
2014/03/05 
開発部田中
項目69 
wait とnotify よりコンカレンシーユーティリ 
ティを選ぶ
コンカレンシーユーティリティ 
• waitとnotifyの代替として 
• コンカレントコレクションの並行性を排除 
することはできない 
o コンカレントコレクションをロックしても効果なし 
• BlockingQueue, CowntDownLatchなど
ブロックする操作 
• ex. BlockingQueue 
• 生産者-消費者キュー
シンクロナイザー 
• ex. CountDownLatch 
o 指定された数のスレッドが揃うのを待つ 
 ワーカースレッド: 3 
 タイマースレッド: 1 
o 注意点として 
 エグゼキューターの許容スレッド数 
 Thread.currentThread().interrupt() 
 時間間隔の計測にはSystem.nanoTime()
Effective Java 輪読会 項目69-70
wait とnotify 
• waitメソッドを使用する場合は、常にループ 
イディオムを用いる 
• 可能な限りコンカレンシーユーティリティ 
を使う
項目70 
スレッド安全性を文書化する
syncronized修飾子 
• syncronized修飾子はAPIの一部ではない 
o スレッドセーフを保証する意味は含まれない
安全性の段階 
1. 不変 
2. 無条件スレッドセーフ 
3. 条件付きスレッドセーフ 
4. スレッドセーフではない 
5. スレッド敵対
条件付きスレッドセーフを文書化 
• どの一連の呼び出しが外部同期を必要とし、 
どのロックを獲得しなければならないかを 
明記する 
o ex. Collections.syncronizedMap().keySet()
プライベートロックオブジェクトイディオム 
• ロックオブジェクトをカプセル化すること 
で、サービス拒否攻撃を防ぐ 
• 無条件スレッドセーフのクラスに対しての 
み使用可能 
• 継承のために設計されたクラスに対して有 
効

More Related Content

PDF
Intel TSX HLE を触ってみた x86opti
PDF
規格書で読むC++11のスレッド
PDF
C++ マルチスレッド 入門
PDF
Rustを勉強してみた!
PDF
emcjp Item 42
PDF
Intel TSX について x86opti
PDF
C++ マルチスレッドプログラミング
PDF
イマドキC++erのモテカワリソース管理術
Intel TSX HLE を触ってみた x86opti
規格書で読むC++11のスレッド
C++ マルチスレッド 入門
Rustを勉強してみた!
emcjp Item 42
Intel TSX について x86opti
C++ マルチスレッドプログラミング
イマドキC++erのモテカワリソース管理術

What's hot (20)

PDF
Wavelet matrix implementation
PDF
Intel TSX 触ってみた 追加実験 (TTAS)
PDF
いいかげんな人のためのTransactional Memory Primer
PDF
あなたの知らないnopたち@ラボユース合宿
PDF
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
PPTX
冬のLock free祭り safe
PDF
[Basic 9] 並列処理 / 排他制御
PPTX
JavaScriptで加速度・回転情報を取得してみた
PDF
BLS署名の実装とその応用
PDF
C++ Transactional Memory言語拡張の紹介
PPTX
非同期処理の基礎
PDF
あるコンテキストスイッチの話
PDF
ストリーム処理エンジン「Zero」の開発と運用
PPT
How to read linux kernel
PDF
From IA-32 to avx-512
PDF
Rubyでつくるスレッド
PDF
20100626 CVIM(3)6,7 shirasy
PDF
[Basic 8] プロセスとスレッド / 入出力 / シェル
PDF
マイクラ自動化枠第1回資料
PPTX
もしも… Javaでヘテロジニアスコアが使えたら…
Wavelet matrix implementation
Intel TSX 触ってみた 追加実験 (TTAS)
いいかげんな人のためのTransactional Memory Primer
あなたの知らないnopたち@ラボユース合宿
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
冬のLock free祭り safe
[Basic 9] 並列処理 / 排他制御
JavaScriptで加速度・回転情報を取得してみた
BLS署名の実装とその応用
C++ Transactional Memory言語拡張の紹介
非同期処理の基礎
あるコンテキストスイッチの話
ストリーム処理エンジン「Zero」の開発と運用
How to read linux kernel
From IA-32 to avx-512
Rubyでつくるスレッド
20100626 CVIM(3)6,7 shirasy
[Basic 8] プロセスとスレッド / 入出力 / シェル
マイクラ自動化枠第1回資料
もしも… Javaでヘテロジニアスコアが使えたら…
Ad

Viewers also liked (16)

PPTX
Effective Java 輪読会 項目69-70追加
PPTX
Effective Java 輪読会 項目71-73
PPTX
Effective Java 輪読会 項目66-68
PPTX
Effective Java 輪読会 項目63-65
PDF
JavaScript 勉強会 ― 型と値
PDF
JavaScript 勉強会 ― 変数・演算子・文
PPTX
Effective Java 輪読会 項目53-56
PPTX
Effective Java 輪読会 項目60-62
PPTX
Effective Java 輪読会 項目74-75
PPTX
Effective Java 輪読会 項目45-48
PPTX
Effective Java 輪読会 項目77-78
PPTX
Effective Java 輪読会 第7章 項目43-44
PPTX
Effective Java 輪読会 項目49-52
PDF
マルチスレッド デザインパターン ― Single Threaded Execution
PDF
20150302 java8 第一回_ラムダ式(1)
PDF
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
Effective Java 輪読会 項目69-70追加
Effective Java 輪読会 項目71-73
Effective Java 輪読会 項目66-68
Effective Java 輪読会 項目63-65
JavaScript 勉強会 ― 型と値
JavaScript 勉強会 ― 変数・演算子・文
Effective Java 輪読会 項目53-56
Effective Java 輪読会 項目60-62
Effective Java 輪読会 項目74-75
Effective Java 輪読会 項目45-48
Effective Java 輪読会 項目77-78
Effective Java 輪読会 第7章 項目43-44
Effective Java 輪読会 項目49-52
マルチスレッド デザインパターン ― Single Threaded Execution
20150302 java8 第一回_ラムダ式(1)
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
Ad

More from Appresso Engineering Team (15)

PPTX
Java Day Tokyo 2014 まとめ (chen)
PPTX
Effective java 輪読会 項目57-59
PDF
Effective Java 輪読会 第7章 項目41-42
PPTX
Effective Java 輪読会 第7章 項目38-40
PPTX
Effective Java 輪読会 第6章 項目35-37
PPTX
Effective java 輪読会 第6章 項目32-34
PPTX
Effective java 輪読会 第6章 項目30-31
PPTX
Effective java 輪読会 第5章 項目26-29
PPTX
Effective java 輪読会 第5章 項目23-25
PPTX
Effective java 輪読会 第4章 項目18-22
PPTX
Effective Java 輪読会 第4章 項目13-17
PPTX
Effective java 輪読会 第3章 項目11, 12
PPTX
Effective java 輪読会 第3章 項目8,9,10
PPTX
Effective java 輪読会 第2章 項目5,6,7
PPTX
Effective java 輪読会 第2章 項目1,2,3,4
Java Day Tokyo 2014 まとめ (chen)
Effective java 輪読会 項目57-59
Effective Java 輪読会 第7章 項目41-42
Effective Java 輪読会 第7章 項目38-40
Effective Java 輪読会 第6章 項目35-37
Effective java 輪読会 第6章 項目32-34
Effective java 輪読会 第6章 項目30-31
Effective java 輪読会 第5章 項目26-29
Effective java 輪読会 第5章 項目23-25
Effective java 輪読会 第4章 項目18-22
Effective Java 輪読会 第4章 項目13-17
Effective java 輪読会 第3章 項目11, 12
Effective java 輪読会 第3章 項目8,9,10
Effective java 輪読会 第2章 項目5,6,7
Effective java 輪読会 第2章 項目1,2,3,4

Effective Java 輪読会 項目69-70