ホーム › マルチスレッド
マルチスレッド(Thread)
Java のスレッド基礎から synchronized・volatile・ExecutorService まで、マルチスレッドの実装パターンを解説します。
Th-01: Thread の基本
Thread クラスの継承と Runnable インターフェース実装の2パターン。start() vs run() の違い、join() による完了待機を解説。
ThreadRunnablestartjoinTh-02: synchronized キーワード
レースコンディションとは何か。synchronized メソッドとブロックによるスレッドセーフな実装パターンを解説。
synchronizedレースコンディションスレッドセーフTh-03: volatile キーワード・メモリ可視性
CPU キャッシュとメインメモリの可視性問題を解説。volatile と AtomicXxx の使い分けを示します。
volatileAtomicBooleanメモリ可視性Th-04: ThreadLocal — スレッド固有のデータ保持
各スレッドに独立したデータを保持する ThreadLocal の使い方。メモリリーク防止の remove() パターンも解説。
ThreadLocalSimpleDateFormatスレッドセーフTh-05: ExecutorService / スレッドプール管理
Executors.newFixedThreadPool()・newCachedThreadPool() の使い分けと Future による非同期結果取得を解説。
ExecutorServiceFutureスレッドプールTh-06: ReentrantLock / ReadWriteLock
synchronized より細粒度な ReentrantLock と、読み書き分離の ReadWriteLock の使い分けを解説。
ReentrantLockReadWriteLocktryLock