Spec-Zone .ru
спецификации, руководства, описания, API
|
Java 2 платформы включает новый пакет утилит параллелизма. Они - классы, которые разрабатываются, чтобы использоваться в качестве стандартных блоков в создании параллельных классов или приложений. Так же, как платформа наборов, упрощенная организация и манипулирование данными в памяти, обеспечивая реализации обычно используемых структур данных, утилиты параллелизма упрощают разработку параллельных классов, обеспечивая реализации стандартных блоков, обычно используемых в параллельных проектах. Утилиты параллелизма включают высокоэффективный, гибкий пул потоков; платформа для асинхронного выполнения задач; узел классов набора оптимизируется для параллельного доступа; утилиты синхронизации, такие как подсчет семафоров; атомарные переменные; блокировки; и условные переменные.
Используя утилиты параллелизма, вместо того, чтобы разработать компоненты, такие как пулы потоков самостоятельно, предлагает много преимуществ:
synchronized
, volatile
, wait()
, notify()
, и notifyAll()
) являются трудными использовать правильно, и ошибки, используя эти средства может быть трудно обнаружить и отладить. При использовании стандартизированных, экстенсивно протестированных стандартных блоков параллелизма устраняются много потенциальных источников поточной обработки опасностей, таких как мертвая блокировка, исчерпание ресурсов, условия состязания, или чрезмерное контекстное переключение. Утилиты параллелизма тщательно контролировались для мертвой блокировки, исчерпания ресурсов, и условий состязания.Короче говоря, использование утилит параллелизма, чтобы реализовать параллельное приложение может помочь Вашей программе быть более четким, короче, быстрее, более надежный, более масштабируемый, легче записать, легче читать, и легче поддержать.
Утилиты параллелизма включают:
Executor
интерфейс стандартизирует вызов, планирование, выполнение, и управление асинхронных задач согласно ряду политик выполнения. Реализации состоят в том при условии, что позволяют задачам выполняться в пределах подчиняющегося потока, в единственном фоновом потоке (как с событиями в Swing), в недавно создаваемом потоке, или в пуле потоков, и разработчики могут создать настроенные реализации Исполнителя, которые поддерживают произвольные политики выполнения. Встроенные реализации предлагают конфигурируемые политики, такие как пределы длины очереди и политика насыщенности, которая может улучшить устойчивость приложений, предотвращая безудержное использование ресурса.Queue
, BlockingQueue
и BlockingDeque
интерфейсы, и высокоэффективные, параллельные реализации Map
, List
, и Queue
. См. Руководство по Платформе Наборов для получения дополнительной информации.java.util.concurrent.atomic
предложение более высокая производительность чем было бы доступно при использовании синхронизации (на большинстве платформ), делая их полезный для того, чтобы реализовал высокоэффективные параллельные алгоритмы и удобно реализовал генераторы порядкового номера и счетчики.java.util.concurrent.locks
пакет предоставляет высокоэффективной реализации блокировки ту же самую семантику памяти как синхронизация, и это также поддерживает определение тайм-аута, пытаясь получить блокировку, многократные условные переменные на блокировку, невложенную ("рука по руке") содержание многократных блокировок, и поддержка прерывания потоков, которые ожидают, чтобы получить блокировку.System.nanoTime
метод включает доступу к источнику времени гранулярности наносекунды для того, чтобы сделать относительные измерения времени и методы, которые принимают тайм-ауты (такой как
BlockingQueue.offer
,
BlockingQueue.poll
,
Lock.tryLock
,
Condition.await
, и Thread.sleep
) может принять значения тайм-аута в наносекундах. Фактическая точность System.nanoTime
метод зависим от платформы.