Spec-Zone .ru
спецификации, руководства, описания, API
|
public abstract class AsynchronousChannelGroup extends Object
Асинхронная группа канала инкапсулирует механику, требуемую обработать завершение операций ввода-вывода, инициируемых asynchronous channels
это связывается с группой. У группы есть связанный пул потоков, к которому задачи представляются, чтобы обработать события ввода-вывода и диспетчеризировать completion-handlers
это использует результат асинхронных операций, выполняемых на каналах в группе. В дополнение к обработке событий ввода-вывода объединенные в пул потоки могут также выполнить другие задачи, требуемые поддерживать выполнение асинхронных операций ввода-вывода.
Асинхронная группа канала создается, вызывая withFixedThreadPool
или withCachedThreadPool
методы, определенные здесь. Каналы связываются с группой, определяя группу, создавая канал. Связанный пул потоков принадлежит группе; завершение группы приводит к завершению работы связанного пула потоков.
В дополнение к группам, создаваемым явно, виртуальная машина Java поддерживает группу по умолчанию в масштабе всей системы, которая создается автоматически. Асинхронные каналы, которые не определяют группу во время создания, связываются с группой по умолчанию. У группы по умолчанию есть связанный пул потоков, который создает новые потоки как необходимый. Группа по умолчанию может быть сконфигурирована посредством системных свойств, определенных в таблице ниже. Где ThreadFactory
поскольку группа по умолчанию не конфигурируется тогда, объединенные в пул потоки группы по умолчанию daemon
потоки.
Системное свойство | Описание |
---|---|
java.nio.channels.DefaultThreadPool.threadFactory |
Значение этого свойства принимается, чтобы быть полностью определенным именем бетона ThreadFactory класс. Класс загружается, используя системный загрузчик класса и инстанцируется. Фабрика newThread метод вызывается, чтобы создать каждый поток для пула потоков группы по умолчанию. Если процесс, чтобы загрузиться и инстанцировать значения свойства перестал работать тогда, неустановленная ошибка бросается во время конструкции группы по умолчанию. |
java.nio.channels.DefaultThreadPool.initialSize |
Значение initialSize параметр для группы по умолчанию (см. withCachedThreadPool ). Значение свойства принимается, чтобы быть String представление Integer это - начальный параметр размера. Если значение не может быть проанализировано как Integer это заставляет неустановленную ошибку быть брошенной во время конструкции группы по умолчанию. |
Обработчик завершения для работы ввода-вывода, инициируемой на канале, связанном с группой, как гарантируют, будет вызван одним из объединенных в пул потоков в группе. Это гарантирует, что обработчик завершения выполняется потоком с ожидаемыми идентификационными данными.
Где работа ввода-вывода сразу завершается, и поток инициирования является одним из объединенных в пул потоков в группе тогда, обработчик завершения может быть вызван непосредственно потоком инициирования. Чтобы избежать переполнения стека, реализация может наложить предел относительно числа активаций на стеке потока. Некоторые операции ввода-вывода могут запретить вызов обработчика завершения непосредственно потоком инициирования (см. accept
). Завершение работы и Завершение
shutdown
метод используется, чтобы инициировать аккуратное завершение работы группы. Аккуратное завершение работы отмечает группу как завершение работы; дальнейшие попытки создать канал, который связывает с группой, бросят ShutdownChannelGroupException
. Является ли группа завершением работы, может быть протестирован, используя isShutdown
метод. Однажды завершение работы завершается группа, когда все асинхронные каналы, которые связываются с группой, закрываются, все активно выполняющиеся обработчики завершения работали к завершению, и средства, используемые группой, высвобождаются. Никакая попытка не предпринимается, чтобы остановить или прервать потоки, которые выполняют обработчики завершения. isTerminated
метод используется, чтобы протестировать, если группа завершилась, и awaitTermination
метод может использоваться, чтобы блокировать, пока группа не завершилась.
shutdownNow
метод может использоваться, чтобы инициировать действительное завершение работы группы. В дополнение к действиям, выполняемым аккуратным завершением работы, shutdownNow
метод закрывает все открытые каналы в группе как будто, вызывая close
метод.
Модификатор | Конструктор и Описание |
---|---|
protected |
AsynchronousChannelGroup(AsynchronousChannelProvider provider)
Инициализируйте новый экземпляр этого класса.
|
Модификатор и Тип | Метод и Описание |
---|---|
abstract boolean |
awaitTermination(long timeout, TimeUnit unit)
Ждет завершения группы.
|
abstract boolean |
isShutdown()
Говорит, является ли эта асинхронная группа канала завершением работы.
|
abstract boolean |
isTerminated()
Говорит, завершилась ли эта группа.
|
AsynchronousChannelProvider |
provider()
Возвращает провайдера, который создал эту группу канала.
|
abstract void |
shutdown()
Инициирует аккуратное завершение работы группы.
|
abstract void |
shutdownNow()
Завершает работу группы и закрывает все открытые каналы в группе.
|
static AsynchronousChannelGroup |
withCachedThreadPool(ExecutorService executor, int initialSize)
Создает асинхронную группу канала с данным пулом потоков, который создает новые потоки как необходимый.
|
static AsynchronousChannelGroup |
withFixedThreadPool(int nThreads, ThreadFactory threadFactory)
Создает асинхронную группу канала с фиксированным пулом потоков.
|
static AsynchronousChannelGroup |
withThreadPool(ExecutorService executor)
Создает асинхронную группу канала с данным пулом потоков.
|
protected AsynchronousChannelGroup(AsynchronousChannelProvider provider)
provider
- Асинхронный провайдер канала для этой группыpublic final AsynchronousChannelProvider provider()
public static AsynchronousChannelGroup withFixedThreadPool(int nThreads, ThreadFactory threadFactory) throws IOException
Получающаяся асинхронная группа канала снова использует постоянное число потоков. В любой точке, самое большее nThreads
потоки будут активными задачами обработки, которые представляются, чтобы обработать события ввода-вывода и диспетчеризировать результаты завершения для операций, инициируемых на асинхронных каналах в группе.
Группа создается, вызывая openAsynchronousChannelGroup(int,ThreadFactory)
метод значения по умолчанию в масштабе всей системы AsynchronousChannelProvider
объект.
nThreads
- Число потоков в пулеthreadFactory
- Фабрика, чтобы использовать, создавая новые потокиIllegalArgumentException
- Если nThreads <= 0
IOException
- Если ошибка ввода-вывода происходитpublic static AsynchronousChannelGroup withCachedThreadPool(ExecutorService executor, int initialSize) throws IOException
executor
параметр ExecutorService
это создает новые потоки как необходимый выполнить задачи, которые представляются, чтобы обработать события ввода-вывода и диспетчеризировать результаты завершения для операций, инициируемых на асинхронных каналах в группе. Это может снова использовать ранее созданные потоки, когда они доступны.
initialSize
параметр может использоваться реализацией в качестве подсказки относительно начального числа задач, которые это может представить. Например, это может привыкнуть к indictae начальное число потоков, которые ожидают на событиях ввода-вывода.
Исполнитель предназначается, чтобы использоваться исключительно получающейся асинхронной группой канала. Завершение группы приводит к санитару shutdown
из службы исполнителя. Завершение работы службы исполнителя другими средствами приводит к неуказанному поведению.
Группа создается, вызывая openAsynchronousChannelGroup(ExecutorService,int)
метод значения по умолчанию в масштабе всей системы AsynchronousChannelProvider
объект.
executor
- Пул потоков для получающейся группыinitialSize
- Значение >=0
или отрицательная величина для реализации определенное значение по умолчаниюIOException
- Если ошибка ввода-вывода происходитExecutors.newCachedThreadPool()
public static AsynchronousChannelGroup withThreadPool(ExecutorService executor) throws IOException
executor
параметр ExecutorService
это выполняет задачи, представленные, чтобы диспетчеризировать результаты завершения для операций, инициируемых на асинхронных каналах в группе.
Забота должна быть проявлена, конфигурируя службу исполнителя. Это должно поддерживать прямой handoff или неограниченную организацию очередей представленных задач, и поток, который вызывает execute
метод никогда не должен вызывать задачу непосредственно. Реализация может передать под мандат дополнительные ограничения.
Исполнитель предназначается, чтобы использоваться исключительно получающейся асинхронной группой канала. Завершение группы приводит к санитару shutdown
из службы исполнителя. Завершение работы службы исполнителя другими средствами приводит к неуказанному поведению.
Группа создается, вызывая openAsynchronousChannelGroup(ExecutorService,int)
метод значения по умолчанию в масштабе всей системы AsynchronousChannelProvider
объект с initialSize
из 0
.
executor
- Пул потоков для получающейся группыIOException
- Если ошибка ввода-вывода происходитpublic abstract boolean isShutdown()
true
если эта асинхронная группа канала является завершением работы или была отмечена для завершения работы.public abstract boolean isTerminated()
Куда этот метод возвращается true
, тогда связанный пул потоков имеет также terminated
.
true
если эта группа завершиласьpublic abstract void shutdown()
Этот метод отмечает группу как завершение работы. Дальнейшие попытки создать канал, который связывает с этой группой, бросят ShutdownChannelGroupException
. Группа завершается, когда все асинхронные каналы в группе закрываются, все активно выполняющиеся обработчики завершения работали к завершению, и все средства были высвобождены. Этот метод не имеет никакого эффекта, если группа уже является завершением работы.
public abstract void shutdownNow() throws IOException
В дополнение к действиям, выполняемым shutdown
метод, этот метод вызывает close
метод на всех открытых каналах в группе. Этот метод не пытается остановить или прервать потоки, которые выполняют обработчики завершения. Группа завершается, когда все активно выполняющиеся обработчики завершения работали к завершению, и все средства были высвобождены. В любое время может быть вызван этот метод. Если некоторый другой поток уже вызвал это, то другой вызов блокирует, пока первый вызов не полон, после которого это возвратится без эффекта.
IOException
- Если ошибка ввода-вывода происходитpublic abstract boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException
Этот метод блоки, пока группа не завершилась, или тайм-аут, происходит, или текущий поток прерывается, какой бы ни происходит сначала.
timeout
- Максимальное время, чтобы ожидать, или обнулить или меньше не ожидатьunit
- Единица измерения времени параметра тайм-аутаtrue
если группа завершилась; false
если тайм-аут, законченный перед завершениемInterruptedException
- Если прервано, ожидая
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.