Spec-Zone .ru
спецификации, руководства, описания, API
|
См.: Описание
Интерфейс | Описание |
---|---|
BlockingDeque <E> |
A
Deque это дополнительно поддерживает операции блокирования, которые ожидают двухсторонней очереди, чтобы стать непустыми, получая элемент, и ожидать пространства, чтобы стать доступными в двухсторонней очереди, храня элемент. |
BlockingQueue <E> |
A
Queue это дополнительно поддерживает операции, которые ожидают очереди, чтобы стать непустыми, получая элемент, и ожидать пространства, чтобы стать доступными в очереди, храня элемент. |
Вызываемый <V> |
Задача, которая возвращает результат и может выдать исключение.
|
CompletionService <V> |
Служба, которая разъединяет производство новых асинхронных задач от потребления результатов завершенных задач.
|
ConcurrentMap <K, V> |
A
Map обеспечивая дополнительный атомарный putIfAbsent, remove, и методы replace. |
ConcurrentNavigableMap <K, V> |
A
ConcurrentMap поддержка NavigableMap операции, и рекурсивно так для его судоходных подкарт. |
Задержанный |
Соединение - в стиле взаимодействует через интерфейс для того, чтобы отметить объекты, на которые нужно действовать после данной задержки.
|
Исполнитель |
Объект, который выполняется представленный
Runnable задачи. |
ExecutorService | |
ForkJoinPool. ForkJoinWorkerThreadFactory |
Фабрика для того, чтобы создать новый
ForkJoinWorkerThread s. |
ForkJoinPool. ManagedBlocker |
Интерфейс для того, чтобы расширить управляемый параллелизм для задач, работающих в
ForkJoinPool s. |
Будущее <V> |
Future представляет результат асинхронного вычисления.
|
RejectedExecutionHandler |
Обработчик для задач, которые не могут быть выполнены a
ThreadPoolExecutor . |
RunnableFuture <V> | |
RunnableScheduledFuture <V> |
A
ScheduledFuture это Runnable . |
ScheduledExecutorService |
ExecutorService это может запланировать команды, чтобы бежать за данной задержкой, или периодически выполняться. |
ScheduledFuture <V> |
Задержанное переносящее результат действие, которое может быть отменено.
|
ThreadFactory |
Объект, который создает новые потоки по требованию.
|
TransferQueue <E> |
A
BlockingQueue в котором производители могут ожидать потребителей, чтобы получить элементы. |
Класс | Описание |
---|---|
AbstractExecutorService |
Обеспечивает реализации по умолчанию
ExecutorService методы выполнения. |
ArrayBlockingQueue <E> |
Ограниченная очередь блокирования отступала массивом.
|
ConcurrentHashMap <K, V> |
Хэш-таблица, поддерживающая полный параллелизм извлечений и корректируемый ожидаемый параллелизм для обновлений.
|
ConcurrentLinkedDeque <E> |
Неограниченная параллельная двухсторонняя очередь, основанная на соединенных узлах.
|
ConcurrentLinkedQueue <E> |
Неограниченная ориентированная на многопотоковое исполнение очередь, основанная на соединенных узлах.
|
ConcurrentSkipListMap <K, V> |
Масштабируемое параллельное
ConcurrentNavigableMap реализация. |
ConcurrentSkipListSet <E> |
Масштабируемое параллельное
NavigableSet реализация, основанная на a ConcurrentSkipListMap . |
CopyOnWriteArrayList <E> |
Ориентированная на многопотоковое исполнение разновидность
ArrayList в котором все изменчивые операции (add, set, и так далее) реализуются, делая новую копию базового массива. |
CopyOnWriteArraySet <E> |
A
Set это использует внутреннее CopyOnWriteArrayList для всех его операций. |
CountDownLatch |
Средство синхронизации, которое позволяет одному или более потокам ожидать до ряда операций, выполняемых в других потоках, завершается.
|
CyclicBarrier |
Средство синхронизации, которое позволяет ряд потоков всем, ожидает друг друга, чтобы достигнуть общей точки барьера.
|
DelayQueue <E расширяется Задержанный> |
Неограниченная очередь блокирования элементов Delayed, в которых может только быть взят элемент, когда его задержка истекла.
|
Теплообменник <V> |
Точка синхронизации, в которой потоки могут соединить и подкачать элементы в пределах пар.
|
ExecutorCompletionService <V> |
A
CompletionService это использует предоставленный Executor выполнить задачи. |
Исполнители |
Фабрика и служебные методы для
Executor , ExecutorService , ScheduledExecutorService , ThreadFactory , и Callable классы определяются в этом пакете. |
ForkJoinPool |
ExecutorService для того, чтобы работать ForkJoinTask s. |
ForkJoinTask <V> |
Абстрактный базовый класс для задач, которые работают в пределах a
ForkJoinPool . |
ForkJoinWorkerThread |
Поток управлял a
ForkJoinPool , который выполняется ForkJoinTask s. |
FutureTask <V> |
cancellable асинхронное вычисление.
|
LinkedBlockingDeque <E> |
Дополнительно ограниченная двухсторонняя очередь блокирования, основанная на соединенных узлах.
|
LinkedBlockingQueue <E> |
Дополнительно ограниченная очередь блокирования, основанная на соединенных узлах.
|
LinkedTransferQueue <E> |
Неограниченное
TransferQueue основанный на соединенных узлах. |
Фазовращатель |
Допускающий повторное использование барьер синхронизации, подобный в функциональности к
CyclicBarrier и CountDownLatch но поддержка более гибкого использования. |
PriorityBlockingQueue <E> |
Неограниченная очередь блокирования, которая использует те же самые правила упорядочивания в качестве класса
PriorityQueue и предоставления, блокирующие операции извлечения. |
RecursiveAction |
Рекурсивный resultless
ForkJoinTask . |
RecursiveTask <V> |
Рекурсивный перенос результата
ForkJoinTask . |
ScheduledThreadPoolExecutor |
A
ThreadPoolExecutor это может дополнительно запланировать команды, чтобы бежать за данной задержкой, или периодически выполняться. |
Семафор |
Семафор подсчета.
|
SynchronousQueue <E> |
Очередь блокирования, в которую каждый вставляет работу, должна ожидать соответствия, удаляют работу другим потоком, и наоборот.
|
ThreadLocalRandom |
Генератор случайных чисел, изолированный к текущему потоку.
|
ThreadPoolExecutor |
ExecutorService это выполняет каждую представленную задачу, используя один возможно из нескольких объединенных в пул потоков, обычно сконфигурированное использование Executors методы фабрики. |
ThreadPoolExecutor. AbortPolicy |
Обработчик для отклоненных задач, который бросает a
RejectedExecutionException . |
ThreadPoolExecutor. CallerRunsPolicy |
Обработчик для отклоненных задач, который выполняет отклоненную задачу непосредственно в вызывающем потоке
execute метод, если исполнитель не был выключен, когда задача отбрасывается. |
ThreadPoolExecutor. DiscardOldestPolicy |
Обработчик для отклоненных задач, который отбрасывает самый старый необработанный запрос и затем повторяет
execute , если исполнитель не выключен, когда задача отбрасывается. |
ThreadPoolExecutor. DiscardPolicy |
Обработчик для отклоненных задач, который тихо отбрасывает отклоненную задачу.
|
Перечисление | Описание |
---|---|
TimeUnit |
TimeUnit представляет продолжительности времени в данном модуле гранулярности и обеспечивает служебные методы, чтобы преобразовать через модули, и выполнить синхронизацию и операции задержки в этих модулях.
|
Исключение | Описание |
---|---|
BrokenBarrierException |
Исключение, выданное, когда поток пытается ожидать на барьер, который находится в нарушенном состоянии, или который вводит нарушенное состояние, в то время как поток ожидает.
|
CancellationException |
Исключение, указывающее, что результат производящей значение задачи, такой как a
FutureTask , не может быть получен, потому что задача была отменена. |
ExecutionException |
Исключение, выданное, пытаясь получить результат задачи, который прерванный, выдавая исключение.
|
RejectedExecutionException |
Исключение, выданное
Executor когда задача не может быть принята для выполнения. |
TimeoutException |
Исключение, выданное, когда работа блокирования времена.
|
java.util.concurrent.locks
и java.util.concurrent.atomic
пакеты. Executor
простой стандартизированный интерфейс для того, чтобы определить пользовательские нитевидные подсистемы, включая пулы потоков, асинхронный IO, и легкие платформы задачи. В зависимости от которого используется конкретный класс Исполнителя, задачи могут выполниться в недавно создаваемом потоке, существующем потоке выполнения задачи, или вызове потока execute
, и может выполниться последовательно или одновременно. ExecutorService
служит более полной асинхронной основой выполнения задачи. ExecutorService управляет организацией очередей и планированием задач, и позволяет управляемое завершение работы. ScheduledExecutorService
подвзаимодействуйте через интерфейс и связанные интерфейсы добавляют поддержку задержанного и периодического выполнения задачи. ExecutorServices обеспечивают методы, располагая асинхронное выполнение любой функции, выраженной как Callable
, переносящий результат аналог Runnable
. A Future
возвращает результаты функции, позволяет определение того, завершилось ли выполнение, и обеспечивает средство отменить выполнение. A RunnableFuture
a Future
это обладает a run
метод, что после выполнения, устанавливает свои результаты.
Реализации. Классы ThreadPoolExecutor
и ScheduledThreadPoolExecutor
обеспечьте настраиваемые, гибкие пулы потоков. Executors
класс обеспечивает методы фабрики для наиболее распространенных видов и конфигураций Исполнителей, так же как несколько служебных методов для того, чтобы использовать их. Другие утилиты, основанные на Executors
включайте реальный класс FutureTask
обеспечение общей расширяемой реализации Фьючерса, и ExecutorCompletionService
, это помогает в координировании обработки групп асинхронных задач.
Класс ForkJoinPool
предоставляет Исполнителю, прежде всего разработанному для того, чтобы обработать экземпляры ForkJoinTask
и его подклассы. Эти классы используют крадущего работу планировщика, который достигает высокой пропускной способности для задач, соответствующих ограничениям, которые часто содержат в интенсивной вычислением параллельной обработке.
ConcurrentLinkedQueue
класс предоставляет эффективную масштабируемую ориентированную на многопотоковое исполнение очередь FIFO неблокирования. Пять реализаций в java.util.concurrent
поддерживайте расширенный BlockingQueue
интерфейс, который определяет версии блокирования помещенных и берет: LinkedBlockingQueue
, ArrayBlockingQueue
, SynchronousQueue
, PriorityBlockingQueue
, и DelayQueue
. Различные классы покрывают наиболее распространенные контексты использования для производителя-потребителя, обмена сообщениями, параллельного управления задачами, и связали параллельные проекты.
Расширенный интерфейс TransferQueue
, и реализация LinkedTransferQueue
представьте синхронное transfer
метод (наряду со связанными функциями), в котором производитель может дополнительно блокировать ожидание его потребителя.
BlockingDeque
интерфейс расширяется BlockingQueue
поддерживать и FIFO и LIFO (стековые) операции. Класс LinkedBlockingDeque
обеспечивает реализацию.
TimeUnit
класс обеспечивает многократные гранулярности (включая наносекунды) для определения и управления тайм-аутом базируемые операции. Большинство классов в пакете содержит операции, основанные на тайм-аутах в дополнение к неопределенному, ожидает. Во всех случаях, что тайм-ауты используются, тайм-аут определяет минимальное время, когда метод должен ожидать прежде, чем указать что это синхронизированный. Реализации делают "максимальные усилия", чтобы обнаружить тайм-ауты как можно скорее после того, как они происходят. Однако, неопределенное количество времени может протечь между обнаруживаемым тайм-аутом и потоком, фактически выполняющимся снова после того тайм-аута. Все методы, которые принимают обработку параметров тайм-аута, оценивают меньше чем или равный, чтобы обнулить, чтобы означать не ожидать вообще. Чтобы ожидать "навсегда", можно использовать значение Long.MAX_VALUE
. Semaphore
классический инструмент параллелизма. CountDownLatch
очень простое все же очень общая утилита для того, чтобы блокировать до данного числа сигналов, событий, или условия содержат. CyclicBarrier
переустанавливаемая многоканальная точка синхронизации, полезная в некоторых стилях параллельного программирования. Phaser
обеспечивает более гибкую форму барьера, который может использоваться, чтобы управлять поэтапно осуществленным вычислением среди многократных потоков. Exchanger
позволяет двум потокам обмениваться объектами в точке рандеву, и полезен в нескольких конвейерных проектах. ConcurrentHashMap
, ConcurrentSkipListMap
, ConcurrentSkipListSet
, CopyOnWriteArrayList
, и CopyOnWriteArraySet
. Когда много потоков, как ожидают, получат доступ к данному набору, a ConcurrentHashMap
обычно предпочтительно для синхронизируемого HashMap
, и a ConcurrentSkipListMap
обычно предпочтительно для синхронизируемого TreeMap
. A CopyOnWriteArrayList
предпочтительно для синхронизируемого ArrayList
когда ожидаемое число чтений и обходов значительно превосходит численностью число обновлений к списку. "Параллельный" префикс, используемый с некоторыми классами в этом пакете, является сокращением, указывающим на несколько различий от подобных "синхронизируемых" классов. Например java.util.Hashtable
и Collections.synchronizedMap(new HashMap())
синхронизируются. Но ConcurrentHashMap
"параллельно". Параллельный набор ориентирован на многопотоковое исполнение, но не управляемый единственной блокировкой исключения. В особом случае ConcurrentHashMap это безопасно разрешает любое число параллельных чтений так же как настраиваемое число параллельных записей. "Синхронизируемые" классы могут быть полезными, когда Вы должны предотвратить весь доступ к набору через единственную блокировку, за счет более плохой масштабируемости. В других случаях, в которых многократные потоки, как ожидают, получат доступ к общему набору, "параллельные" версии обычно предпочтительны. И несинхронизируемые наборы предпочтительны, когда или наборы неразделены, или доступны только, содержа другие блокировки.
Большинство параллельных реализаций Набора (включая большинство Очередей) также отличается от обычных java.util соглашений в том их Iterators, обеспечивают слабо непротиворечивый, а не обход быстрого сбоя. Слабо непротиворечивый iterator ориентирован на многопотоковое исполнение, но не обязательно замораживает набор, выполняя итерации, таким образом, это может (или не может) отражать любые обновления, так как iterator создавался.
synchronized
и volatile
конструкции, так же как Thread.start()
и Thread.join()
методы, может сформироваться, происходит - перед отношениями. В особенности: synchronized
блок или выход метода) монитора происходит - перед каждой последующей блокировкой (synchronized
блок или запись метода) того же самого монитора. И потому что происхождение - перед отношением является переходным, все действия потока до разблокирования происходят - перед всеми действиями, последующими за любым потоком, блокирующим тот монитор. volatile
поле происходит - перед каждым последующим чтением того же самого поля. Записи и чтения volatile
поля имеют подобные эффекты непротиворечивости памяти как ввод и выход из мониторов, но не влекут за собой блокировку взаимного исключения. start
на потоке происходит - перед любым действием в запущенном потоке. join
на том потоке. java.util.concurrent
и его подпакеты расширяют эти гарантии до высокоуровневой синхронизации. В особенности: Runnable
к Executor
произойдите - прежде, чем его выполнение начнется. Так же для Callables
представленный ExecutorService
. Future
произойдите - перед действиями, последующими за извлечением результата через Future.get()
в другом потоке. Lock.unlock
, Semaphore.release
, и CountDownLatch.countDown
произойдите - перед действиями, последующими за успешным методом "получения" такой как Lock.lock
, Semaphore.acquire
, Condition.await
, и CountDownLatch.await
на том же самом синхронизаторе возражают в другом потоке. Exchanger
, действия до exchange()
в каждом потоке происходят - перед последующими за соответствием exchange()
в другом потоке. CyclicBarrier.await
и Phaser.awaitAdvance
(так же как его разновидности), происходят - перед действиями, выполняемыми действием барьера, и действия, выполняемые действием барьера, происходят - перед действиями, последующими за успешным возвратом из соответствия await
в других потоках.
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.