スレッド制御
クラス / インタフェース / メソッド |
概要 |
Since |
java.lang.Thread |
明示的なスレッド制御 |
1.0 |
java.lang.Runnable |
非同期タスク |
1.0 |
java.lang.Thread#sleep |
スレッド休眠処理 |
1.0 |
java.lang.Thread#yield |
スレッド一時休眠のヒント |
1.0 |
java.lang.Thread#onSpinWait |
Spin-Waitループのヒント |
1.9 |
Java 1.5以降では Executorsフレームワーク 利用を優先検討のこと。 |
|
|
遅延実行(タイマー)
クラス / メソッド |
概要 |
Since |
java.util.TimerTask |
遅延実行タスク |
1.3 |
java.util.Timer#schedule |
遅延タスクの実行予約 |
1.3 |
java.util.Timer#scheduleAtFixedRate |
遅延タスクの周期実行予約 |
1.3 |
Java 1.5以降では Executorsフレームワーク 利用を優先検討のこと。 |
|
|
モニター同期
メソッド / 構文 |
概要 |
Since |
java.lang.Object#wait |
モニター待機 |
1.0 |
java.lang.Object#notify |
モニター通知/Signal |
1.0 |
java.lang.Object#notifyAll |
モニター通知/Broadcast |
1.0 |
synchronizedブロック構文 |
スコープベースのモニターロック |
1.0 |
モニター待機/通知処理の代わりに、Java 1.5以降では java.util.concurrentパッケージ (以下j.u.c表記)利用を優先検討のこと。 |
|
|
スレッドセーフ・コンテナ
メソッド |
概要 |
Since |
java.util.Vector |
スレッドセーフ可変長配列 |
1.0 |
java.util.Collections#synchronizedCollection |
スレッドセーフCollectionへの変換 |
1.2 |
java.util.Collections#synchronizedList |
スレッドセーフListへの変換 |
1.2 |
java.util.Collections#synchronizedSet |
スレッドセーフSetへの変換 |
1.2 |
java.util.Collections#synchronizedMap |
スレッドセーフMapへの変換 |
1.2 |
java.util.Collections#synchronizedSortedSet |
スレッドセーフSortedSetへの変換 |
1.2 |
java.util.Collections#synchronizedSortedMap |
スレッドセーフSortedMapへの変換 |
1.2 |
java.util.Collections#synchronizedNavigableSet |
スレッドセーフNavigableSetへの変換 |
1.8 |
java.util.Collections#synchronizedNavigableMap |
スレッドセーフNavigableMapへの変換 |
1.8 |
java.util.Collections#synchronizedXxxメソッドは、モニターロック実装によるスレッドセーフ・コンテナのインスタンスを返す。 |
|
|
並行コンテナ
クラス |
概要 |
Since |
j.u.c.ConcurrentLinkedQueue |
FIFO, ノンブロック/任意上限 |
1.5 |
j.u.c.ArrayBlockingQueue |
FIFO, ブロッキング/上限付き |
1.5 |
j.u.c.LinkedBlockingQueue |
FIFO, ブロッキング/任意上限 |
1.5 |
j.u.c.DelayQueue |
FIFO, ブロッキング/上限なし/遅延指定 |
1.5 |
j.u.c.PriorityBlockingQueue |
優先度付きFIFO, ブロッキング/上限なし |
1.5 |
j.u.c.LinkedBlockingDeque |
LIFO, ブロッキング/任意上限 |
1.6 |
j.u.c.LinkedTransferQueue |
FIFO, 同期転送 or ノンブロック/上限なし |
1.7 |
j.u.c.ConcurrentHashMap |
並行ハッシュテーブル実装によるMap |
1.5 |
j.u.c.ConcurrentSkipListMap |
並行スキップリスト実装によるスレッドセーフMap |
1.6 |
j.u.c.ConcurrentSkipListSet |
並行スキップリスト実装によるスレッドセーフSet |
1.6 |
j.u.c.CopyOnWriteArrayList |
Copy-on-Write実装によるスレッドセーフList |
1.6 |
j.u.c.CopyOnWriteArraySet |
Copy-on-Write実装によるスレッドセーフSet |
1.6 |
同期プリミティブ
クラス / インタフェース
|
概要 |
Since |
j.u.c.Semaphore |
カウンティング・セマフォ |
1.5 |
j.u.c.locks.Lock |
ロック操作インタフェース |
1.5 |
j.u.c.locks.Condition |
Lockから取得する条件変数 |
1.5 |
j.u.c.locks.ReentrantLock |
排他制御(ミューテックス) |
1.5 |
j.u.c.locks.ReentrantReadWriteLock |
共有/排他ロック(Reader-Writerロック) |
1.5 |
j.u.c.locks.StampedLock |
楽観的Read操作+共有/排他ロック |
1.8 |
j.u.c.SynchronousQueue<E> |
単一値の同期転送 |
1.5 |
j.u.c.Exchanger<V> |
2スレッド間の同期値交換 |
1.5 |
j.u.c.CountDownLatch |
複数スレッド到達まで同期待機 |
1.5 |
j.u.c.CyclicBarrier |
同期バリア(ランデブー・ポイント) |
1.5 |
j.u.c.Phaser |
フェーズ同期機構 |
1.7 |
低レイヤ同期プリミティブ
クラス |
概要 |
Since |
j.u.c.locks.LockSupport |
ロック機構実装用の低レイヤ同期プリミティブ |
1.5 |
j.u.c.locks.AbstractQueuedSynchronizer |
ロック機構実装用の低レイヤ同期プリミティブ |
1.5 |
j.u.c.locks.AbstractQueuedLongSynchronizer |
ロック機構実装用の低レイヤ同期プリミティブ |
1.6 |
j.u.c.locks.AbstractOwnableSynchronizer |
ロック機構実装用の低レイヤ同期プリミティブ |
1.6 |
アトミック変数
構文 / クラス |
概要 |
Since |
volatileフィールド |
(部分的な)アトミック変数 |
1.0 |
j.u.c.atomic.AtomicBoolean |
boolean型アトミック変数 |
1.5 |
j.u.c.atomic.AtomicInteger |
int型アトミック変数 |
1.5 |
j.u.c.atomic.AtomicLong |
long型アトミック変数 |
1.5 |
j.u.c.atomic.AtomicReference<V> |
参照型アトミック変数 |
1.5 |
j.u.c.atomic.AtomicMarkableReference<V> |
{参照型,マークビット}ペア アトミック変数 |
1.5 |
j.u.c.atomic.AtomicStampedReference<V> |
{参照型,スタンプ値}ペア アトミック変数 |
1.5 |
j.u.c.atomic.AtomicIntegerArray |
int型配列アトミック変数 |
1.5 |
j.u.c.atomic.AtomicLongArray |
long型配列アトミック変数 |
1.5 |
j.u.c.atomic.AtomicReference<E> |
参照型配列アトミック変数 |
1.5 |
j.u.c.atomic.AtomicIntegerFieldUpdater<T> |
int型フィールドTアトミック更新操作 |
1.5 |
j.u.c.atomic.AtomicLongFieldUpdater<T> |
long型フィールドTアトミック更新操作 |
1.5 |
j.u.c.atomic.AtomicReferenceFieldUpdater<T,V> |
参照型フィールドTアトミック更新操作 |
1.5 |
j.u.c.atomic.LongAdder |
long型アトミック加算操作 |
1.8 |
j.u.c.atomic.DoubleAdder |
double型アトミック加算操作 |
1.8 |
j.u.c.atomic.LongAccumulator |
long型アトミックア2項演算操作 |
1.8 |
j.u.c.atomic.DoubleAccumulator |
double型アトミック2項演算操作 |
1.8 |
低レイヤメモリアクセス操作
クラス |
概要 |
Since |
java.lang.invoke.VarHandle |
アトミック処理実装用のメモリアクセス操作 |
1.9 |
スレッドローカル変数
クラス |
概要 |
Since |
java.lang.ThreadLocal<T> |
スレッドローカル変数 |
1.2 |
java.lang.InheritableThreadLocal<T> |
子スレッドへ値継承するスレッドローカル変数 |
1.2 |
Executorsフレームワーク
クラス / インタフェース / メソッド |
概要 |
Since |
java.lang.Runnable |
戻り値なし非同期タスク |
1.0 |
j.u.c.Callable<T> |
戻り値Tの非同期タスク |
1.5 |
j.u.c.FutureTask<T> |
戻り値Tの取消可能な非同期タスク |
1.5 |
j.u.c.Future<T> |
非同期タスクの結果T |
1.5 |
j.u.c.ExecutorService |
タスク実行サービス操作インタフェース |
1.5 |
j.u.c.Executor#execute |
非同期タスク(Runnable)の実行 |
1.5 |
j.u.c.ExecutorService#submit |
非同期タスクの実行とFutrue<T>取得 |
1.5 |
j.u.c.ExecutorService#shutdown |
タスク実行サービス 受付停止要求 |
1.5 |
j.u.c.ExecutorService#shutdownNow |
タスク実行サービス 即時停止要求 |
1.5 |
j.u.c.ExecutorService#awaitTermination |
タスク実行サービス 完了待機 |
1.5 |
j.u.c.Executors#newSingleThreadExecutor |
シングルスレッド実装ExecutorServiceを作成 |
1.5 |
j.u.c.Executors#newFixedThreadPool |
固定スレッド数のスレッドプール実装ExecutorServiceを作成 |
1.5 |
j.u.c.Executors#newCachedThreadPool |
動的スレッド数のスレッドプール実装ExecutorServiceを作成 |
1.5 |
j.u.c.Executors#newWorkStealingPool |
Work-Stealスレッドプール実装ExecutorServiceを作成 |
1.8 |
j.u.c.ScheduledExecutorService |
開始遅延/周期タスク実行サービス操作インタフェース |
1.5 |
j.u.c.ScheduledExecutorService#schedule |
非同期タスクの遅延実行 |
1.5 |
j.u.c.ScheduledExecutorService#scheduleAtFixedRate |
非同期タスク(Runnable)の周期実行 |
1.5 |
j.u.c.ScheduledExecutorService#scheduleWithFixedDelay |
非同期タスク(Runnable)の周期実行 |
1.5 |
j.u.c.Executors#newSingleThreadScheduledExecutor |
シングルスレッド実装ScheduledExecutorServiceを作成 |
1.5 |
j.u.c.Executors#newScheduledThreadPool |
スレッドプール実装ScheduledExecutorServiceを作成 |
1.5 |
j.u.c.ExecutorCompletionService<V> |
非同期タスクの完了順取得 |
1.5 |
Fork/Joinフレームワーク
クラス / メソッド |
概要 |
Since |
j.u.c.ForkJoinTask<V> |
Fork/Join抽象タスク |
1.7 |
j.u.c.RecursiveAction |
戻り値なしFork/Joinタスク |
1.7 |
j.u.c.RecursiveTask<V> |
戻り値V型のFork/Joinタスク |
1.7 |
j.u.c.CountedCompleter<V> |
完了時処理指定つきFork/Joinタスク |
1.8 |
j.u.c.ForkJoinPool |
Fork/Joinタスク実行ExecutorService |
1.7 |
j.u.c.ForkJoinPool#execute |
戻り値なしFork/Joinタスク実行 |
1.7 |
j.u.c.ForkJoinPool#invoke |
Fork/Joinタスク実行と戻り値取得 |
1.7 |
j.u.c.ForkJoinPool#submit |
Fork/Joinタスク投入 |
1.7 |
j.u.c.ForkJoinWorkerThread |
Fork/Join実行ワーカスレッド |
1.7 |
CompletableFuture API
クラス / インタフェース / メソッド |
概要 |
Since |
j.u.c.CompletionStage<T> |
非同期計算ステージ(継続)インタフェース |
1.8 |
j.u.c.CompletableFuture<T> |
継続可能な非同期タスク |
1.8 |
j.u.c.CompletableFutureクラスの非同期処理はExecutorsフレームワークまたはFork/Joinフレームワーク上で動作する。 |
|
|
Stream API
メソッド |
概要 |
Since |
java.util.stream.BaseStream#parallel |
並列ストリームへの変換 |
1.8 |
java.util.Collection#parallelStream |
コレクション要素の並列ストリーム取得 |
1.8 |
java.util.SplittableRandom |
乱数ストリームの生成 |
1.8 |
Stream API並列ストリーム処理はFork/Joinフレームワーク上に実装されている。ExecutorServiceとしてForkJoinPool.commonPool()が利用される。 |
|
|
Reactive Streams API
クラス / インタフェース
|
概要 |
Since |
j.u.c.Flow.Publisher<T> |
Publisherインタフェース |
1.9 |
j.u.c.Flow.Subscriber<T> |
Subscriberインタフェース |
1.9 |
j.u.c.Flow.Processor<T,R> |
Processorインタフェース |
1.9 |
j.u.c.Flow.Subscription |
Subscriptionインタフェース |
1.9 |
j.u.c.SubmissionPublisher<T> |
Publisher実装 |
1.9 |
アプリケーション実装者向けではなく、Reactive Streamsフレームワーク実装者用の共通基盤API。
非同期I/O(NIO.2)
クラス / インタフェース
|
概要 |
Since |
j.u.c.Future<T> |
非同期I/O要求の結果 |
1.5 |
java.nio.channels.CompletionHandler<V,A> |
非同期I/Oの完了ハンドラ |
1.7 |
java.nio.channels.AsynchronousFileChannel |
非同期ファイルI/O |
1.7 |
java.nio.channels.AsynchronousServerSocketChannel |
非同期サーバソケット |
1.7 |
java.nio.channels.AsynchronousSocketChannel |
非同期ソケット |
1.7 |
java.nio.channels.AsynchronousChannelGroup |
非同期チャネルのグループ化 |
1.7 |
外部プロセス
クラス / メソッド |
概要 |
Since |
java.lang.Runtime#exec |
外部プロセス起動 |
1.0 |
java.lang.ProcessBuilder |
外部プロセス起動 |
1.5 |
java.lang.Process#waitFor |
外部プロセス終了待機 |
1.0 |
java.lang.Process#waitFor |
タイムアウト付き外部プロセス終了待機 |
1.8 |
java.lang.Process#onExit |
外部プロセス終了ハンドラ |
1.9 |
java.lang.Process#getInputStream |
外部プロセス/標準出力 |
1.0 |
java.lang.Process#getErrorStream |
外部プロセス/エラー出力 |
1.0 |
java.lang.Process#getOutputStream |
外部プロセス/標準入力 |
1.0 |
その他
クラス / メソッド |
概要 |
Since |
java.lang.StringBuffer |
スレッドセーフな文字列連結 |
1.0 |
java.lang.StringBuilder |
スレッドアンセーフな文字列連結 |
1.5 |
java.lang.Math#random |
スレッドセーフな乱数生成処理 |
1.0 |
java.util.Random |
スレッドセーフな乱数生成器 |
1.0 |
j.u.c.ThreadLocalRandom |
スレッドローカル乱数生成器 |
1.7 |
java.util.Arrays#sort |
配列の逐次ソート |
1.2 |
java.util.Arrays#parallelSort |
配列の並列ソート |
1.8 |
java.util.Arrays#setAll |
配列要素への逐次設定 |
1.8 |
java.util.Arrays#parallelSetAll |
配列要素への並列設定 |
1.8 |
java.util.Arrays#parallelPrefix |
並列プレフィックス・スキャン |
1.8 |
スレッド間共有が不要ならStringBuilder, ThreadLocalRandomを優先利用する。 |
|
|
java.util.Arrays#parallelSort処理ではForkJoinPool.commonPool()が利用される。 |
|
|