|
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 class. class загружается, используя систему загрузчик class и инстанцируется. Фабрика newThread метод вызывается, чтобы создать каждый поток для группового пула потоков значения по умолчанию. Если процесс, чтобы загрузиться и инстанцировать значения свойства перестал работать тогда, неустановленная ошибка бросается во время конструкции группы значения по умолчанию. |
java.nio.channels.DefaultThreadPool.initialSize |
Значение initialSize параметр для группы значения по умолчанию (см. withCachedThreadPool). Значение свойства принимается, чтобы быть String представление Integer это - начальный параметр размера. Если значение не может быть проанализировано как Integer это заставляет неустановленную ошибку быть брошенной во время конструкции группы значения по умолчанию. |
Обработчик завершения для работы ввода-вывода, инициируемой на канале, связанном с группой, как гарантируют, будет вызван одним из объединенных в пул потоков в группе. Это гарантирует, что обработчик завершения выполняется потоком с ожидаемыми идентификационными данными.
Где работа ввода-вывода сразу завершается, и поток инициирования является одним из объединенных в пул потоков в группе тогда, обработчик завершения может быть вызван непосредственно потоком инициирования. Чтобы избежать переполнения стека, реализация может наложить предел относительно числа активаций на стеке потока. Некоторые операции ввода-вывода могут запретить вызов обработчика завершения непосредственно потоком инициирования (см. accept). Завершение работы и Завершение
shutdown метод используется, чтобы инициировать аккуратное завершение работы группы. Аккуратное завершение работы отмечает группу как завершение работы; дальнейшие попытки создать канал, который связывает с группой, бросят ShutdownChannelGroupException. Является ли группа завершением работы, может быть протестирован, используя isShutdown метод. Однажды завершение работы завершается группа, когда все асинхронные каналы, которые связываются с группой, закрываются, все активно выполняющиеся обработчики завершения работали к завершению, и средства, используемые группой, высвобождаются. Никакая попытка не предпринимается, чтобы остановить или прервать потоки, которые выполняют обработчики завершения. isTerminated метод используется, чтобы протестировать, если группа завершилась, и awaitTermination метод может использоваться, чтобы блокировать, пока группа не завершилась.
shutdownNow метод может использоваться, чтобы инициировать действительное завершение работы группы. В дополнение к действиям, выполняемым аккуратным завершением работы, shutdownNow метод закрывает все открытые каналы в группе как будто, вызывая close метод.
| Модификатор | Конструктор и Описание |
|---|---|
protected |
AsynchronousChannelGroup(AsynchronousChannelProvider provider)
Инициализируйте новый экземпляр этого class.
|
| Модификатор и Тип | Метод и Описание |
|---|---|
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 <= 0IOException - Если ошибка ввода-вывода происходит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 и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92