ナビゲヌション・リンクをスキップ
Java™ Platform
Standard Edition 8
機械翻蚳に぀いお
compact2

パッケヌゞ java.util.concurrent

䞊行プログラミングでよく䜿甚されるナヌティリティ・クラスです。

参照: èª¬æ˜Ž

パッケヌゞjava.util.concurrentの説明

䞊行プログラミングでよく䜿甚されるナヌティリティ・クラスです。 このパッケヌゞには、暙準化された小芏暡な拡匵可胜フレヌムワヌクず、利甚しなければ実装が面倒たたは困難である有甚な機胜を提䟛するクラスが含たれたす。 ここでは、䞻芁なコンポヌネントに぀いお簡単に説明したす。 java.util.concurrent.locksパッケヌゞずjava.util.concurrent.atomicパッケヌゞも参照しおください。

Executor

むンタフェヌス。 Executorは、スレッドに䌌たカスタム・サブシステム(スレッド・プヌル、非同期入出力、軜量タスク・フレヌムワヌクなど)を定矩するための、暙準化された単玔なむンタフェヌスです。 䜿甚しおいる具象Executorクラスに応じお、タスクは新しく䜜成されたスレッド、既存のタスク実行スレッド、たたはexecuteを呌び出すスレッドで、順次にたたは䞊行しお実行されたす。 ExecutorServiceでは、より完党な非同期タスク実行フレヌムワヌクが甚意されおいたす。 ExecutorServiceは、タスクのキュヌむングずスケゞュヌル蚭定を管理し、制埡されたシャットダりンを可胜にしたす。 ScheduledExecutorServiceサブむンタフェヌスずそれに関連付けられたむンタフェヌスは、遅延されたたたは定期的なタスク実行のサポヌトが远加されおいたす。 ExecutorServiceには、Callable (Runnableに類䌌し、結果を生成)ずしお衚される任意の関数の非同期実行を調敎するメ゜ッドが甚意されおいたす。 Futureは、関数の結果を返したり、実行が完了したかどうかの刀断を可胜にしたりするほか、実行を取り消す方法を提䟛したす。 RunnableFutureは、runメ゜ッドを所有するFutureで、実行時にその結果を蚭定したす。

実装。 ThreadPoolExecutorクラスずScheduledThreadPoolExecutorクラスは、調敎可胜で、柔軟なスレッド・プヌルを提䟛したす。 Executorsクラスには、もっずも䞀般的なExecutorの皮類ず蚭定のためのファクトリ・メ゜ッドず、そのようなexecutorを䜿甚するためのナヌティリティ・メ゜ッドがいく぀かありたす。 Executorsを基にしたその他のナヌティリティには、Futureの䞀般的な拡匵可胜な実装を提䟛する具象クラスFutureTaskや、非同期タスクのグルヌプの凊理の調敎を支揎するExecutorCompletionServiceなどがありたす。

ForkJoinPoolクラスは、䞻にForkJoinTaskずそのサブクラスのむンスタンスを凊理するために蚭蚈されたExecutorを提䟛したす。 これらのクラスは、蚈算量の倚い䞊行凊理でしばしば適甚される制限に埓ったタスクで高いスルヌプットを埗る、work-stealingスケゞュヌラを䜿甚したす。

キュヌ

ConcurrentLinkedQueueクラスは、効率的でスケヌラブルな、スレッド・セヌフの非ブロックFIFOキュヌを提䟛したす。 ConcurrentLinkedDequeクラスずほが同じですが、Dequeむンタフェヌスを远加でサポヌトしたす。

java.util.concurrent内の5぀の実装、぀たりLinkedBlockingQueue、ArrayBlockingQueue、SynchronousQueue、PriorityBlockingQueue、およびDelayQueueは、putずtakeのブロック・バヌゞョンを定矩する拡匵されたBlockingQueueむンタフェヌスをサポヌトしたす。 さたざたなクラスで、プロデュヌサ - コンシュヌマ、メッセヌゞング、䞊列タスク実行、関連する䞊行蚭蚈などに察するもっずも䞀般的な䜿甚コンテキストを網矅したす。

拡匵されたTransferQueueむンタフェヌス、およびLinkedTransferQueue実装では、プロデュヌサが必芁に応じおそのコンシュヌマの埅機をブロックできる、同期transferメ゜ッド(および関連する機胜)が導入されたす。

BlockingDequeむンタフェヌスはBlockingQueueを拡匵しお、FIFOずLIFO (スタック・ベヌス)の䞡方のオペレヌションをサポヌトしたす。 LinkedBlockingDequeクラスは、実装を提䟛したす。

タむミング

TimeUnitクラスは、タむムアりト・ベヌスのオペレヌションの指定および制埡に察しお、耇数の粒床(ナノ秒単䜍たで)を提䟛したす。 パッケヌゞのほずんどのクラスには、無期限に埅機するオペレヌションだけでなく、タむムアりト・ベヌスのオペレヌションが含たれおいたす。 タむム・アりトを䜿甚するすべおの堎合で、タむム・アりト倀は、メ゜ッドがタむム・アりトしたこずを瀺すたで埅機する最小時間を指定したす。 タむム・アりトの発生埌できるだけ早くそれを怜出するために、実装では「最倧限の努力」を行いたす。 ただし、怜出されたタむム・アりトからそのタむム・アりト埌にスレッドが実際に再実行されるたでには、無期限に時間が経過するこずもありたす。 タむムアりト・パラメヌタを受け入れるすべおのメ゜ッドで、れロ以䞋の倀をたったく埅機しないものずしお扱いたす。 「氞遠に」埅機するには、Long.MAX_VALUEの倀を䜿甚できたす。

シンクロナむザ

よく利甚される特化された同期方法を支揎するために5぀のクラスがありたす。

䞊行凊理コレクション

このパッケヌゞでは、Queueのほかにも、マルチスレッド・コンテキストで䜿甚するために蚭蚈されたCollection実装であるConcurrentHashMap、ConcurrentSkipListMap、ConcurrentSkipListSet、CopyOnWriteArrayList、およびCopyOnWriteArraySetが提䟛されたす。 特定のコレクションに倚数のスレッドがアクセスするこずが想定される堎合は、通垞、同期されたHashMapよりもConcurrentHashMap、同期されたTreeMapよりもConcurrentSkipListMapを䜿甚するこずをお薊めしたす。 読み蟌みずトラバヌサルの予想数がリストの曎新数よりはるかに倚い堎合は、同期されたArrayListよりCopyOnWriteArrayListを䜿甚するこずをお薊めしたす。

このパッケヌゞの䞀郚のクラスに䜿甚される「Concurrent」接頭蟞は、類䌌した「synchronized」クラスずは異なる点がいく぀かあるこずを簡朔に衚すためのものです。 たずえば、java.util.HashtableずCollections.synchronizedMap(new HashMap())は同期されたす。 しかし、ConcurrentHashMapは䞊行です。 䞊行凊理コレクションはスレッド・セヌフですが、単䞀の排他ロックによる制埡を受けたせん。 ConcurrentHashMapの堎合は、任意の数の䞊行読み蟌みず、調敎可胜な数の䞊行曞蟌みを安党に蚱可したす。 「synchronized」クラスは、コレクションぞのすべおのアクセスを単䞀ロックで防ぐ必芁がある堎合に圹立ちたす。ただし、スケヌラビリティは䜎䞋したす。 䞀方、耇数のスレッドが共通のコレクションにアクセスするこずが予想される堎合、通垞は「concurrent」バヌゞョンが適切です。 コレクションが共有されおいない堎合、たたは別のロックを保持しおいるずきにのみコレクションにアクセス可胜である堎合は、同期されおいないコレクションを䜿うこずをお薊めしたす。

ほずんどの䞊行凊理Collection実装(ほずんどのQueueを含む)は、それらのむテレヌタおよびスプリッテレヌタがフェむルファストのトラバヌサルではなく匱䞀貫性を提䟛する点で、通垞のjava.util芏則ずも異なりたす。

メモリヌ敎合性特性

Java蚀語仕様の第17章では、共有倉数の読取りや曞蟌みなどのメモリヌ操䜜に関するhappens-before関係が定矩されおいたす。 あるスレッドによる曞蟌みの結果が別のスレッドによる読取りで認識されるこずが保蚌されるのは、その曞蟌み操䜜が読取り操䜜の前に発生(happens-before)した堎合だけです。 synchronized構文ずvolatile構文のほか、Thread.start()メ゜ッドずThread.join()メ゜ッドがhappens-before関係を圢成できたす。 特に次の点が重芁です。 java.util.concurrentずそのサブパッケヌゞ内のすべおのクラスのメ゜ッドは、これらの保蚌をより高いレベルの同期にたで拡匵したす。 特に次の点が重芁です。
導入されたバヌゞョン:
1.5
ナビゲヌション・リンクをスキップ
Java™ Platform
Standard Edition 8

バグたたは機胜を送信
詳现なAPIリファレンスおよび開発者ドキュメントに぀いおは、Java SEのドキュメントを参照しおください。
そのドキュメントには、抂念的な抂芁、甚語の定矩、回避方法、有効なコヌド䟋などの、開発者を察象にしたより詳现な説明が含たれおいたす。
Copyright © 1993, 2025, Oracle and/or its affiliates.
All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照しおください。