AsynchronousChannelProvider (Java SE 26 & JDK 26)
Description: declaration: module: java.base, package: java.nio.channels.spi, class: AsynchronousChannelProvider
Keywords: java.nio.channels.spi.AsynchronousChannelProvider class

# Class AsynchronousChannelProvider

java.lang.Object
java.nio.channels.spi.AsynchronousChannelProvider

public abstract class AsynchronousChannelProvider extends Object
Service-provider class for asynchronous channels.

An asynchronous channel provider is a concrete subclass of this class that has a zero-argument constructor and implements the abstract methods specified below. A given invocation of the Java virtual machine maintains a single system-wide default provider instance, which is returned by the `provider` method. The first invocation of that method will locate the default provider as specified below.

All of the methods in this class are safe for use by multiple concurrent threads.

Since:
  1.7

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `AsynchronousChannelProvider()`
  Initializes a new instance of this class.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `abstract AsynchronousChannelGroup`
  `openAsynchronousChannelGroup(int nThreads, ThreadFactory threadFactory)`
  Constructs a new asynchronous channel group with a fixed thread pool.
  `abstract AsynchronousChannelGroup`
  `openAsynchronousChannelGroup(ExecutorService executor, int initialSize)`
  Constructs a new asynchronous channel group with the given thread pool.
  `abstract AsynchronousServerSocketChannel`
  `openAsynchronousServerSocketChannel(AsynchronousChannelGroup group)`
  Opens an asynchronous server-socket channel.
  `abstract AsynchronousSocketChannel`
  `openAsynchronousSocketChannel(AsynchronousChannelGroup group)`
  Opens an asynchronous socket channel.
  `static AsynchronousChannelProvider`
  `provider()`
  Returns the system-wide default asynchronous channel provider for this invocation of the Java virtual machine.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Constructor Details

  - ### AsynchronousChannelProvider

    protected AsynchronousChannelProvider()
    Initializes a new instance of this class.

- ## Method Details

  - ### provider

    public static AsynchronousChannelProvider provider()
    Returns the system-wide default asynchronous channel provider for this invocation of the Java virtual machine.

    The first invocation of this method locates the default provider object as follows:

    1. If the system property `java.nio.channels.spi.AsynchronousChannelProvider` is defined then it is taken to be the fully-qualified name of a concrete provider class. The class is loaded and instantiated; if this process fails then an unspecified error is thrown.

    2. If a provider class has been installed in a jar file that is visible to the system class loader, and that jar file contains a provider-configuration file named `java.nio.channels.spi.AsynchronousChannelProvider` in the resource directory `META-INF/services`, then the first class name specified in that file is taken. The class is loaded and instantiated; if this process fails then an unspecified error is thrown.

    3. Finally, if no provider has been specified by any of the above means then the system-default provider class is instantiated and the result is returned.

    Subsequent invocations of this method return the provider that was returned by the first invocation.

    Returns:
      The system-wide default AsynchronousChannel provider

  - ### openAsynchronousChannelGroup

    public abstract AsynchronousChannelGroup openAsynchronousChannelGroup(int nThreads, ThreadFactory threadFactory) throws IOException
    Constructs a new asynchronous channel group with a fixed thread pool.
    Parameters:
      `nThreads` - The number of threads in the pool
      `threadFactory` - The factory to use when creating new threads
    Returns:
      A new asynchronous channel group
    Throws:
      `IllegalArgumentException` - If `nThreads <= 0`
      `IOException` - If an I/O error occurs
    See Also:
      - `AsynchronousChannelGroup.withFixedThreadPool(int, ThreadFactory)`

  - ### openAsynchronousChannelGroup

    public abstract AsynchronousChannelGroup openAsynchronousChannelGroup(ExecutorService executor, int initialSize) throws IOException
    Constructs a new asynchronous channel group with the given thread pool.
    Parameters:
      `executor` - The thread pool
      `initialSize` - A value `>=0` or a negative value for implementation specific default
    Returns:
      A new asynchronous channel group
    Throws:
      `IOException` - If an I/O error occurs
    See Also:
      - `AsynchronousChannelGroup.withCachedThreadPool(ExecutorService, int)`

  - ### openAsynchronousServerSocketChannel

    public abstract AsynchronousServerSocketChannel openAsynchronousServerSocketChannel(AsynchronousChannelGroup group) throws IOException
    Opens an asynchronous server-socket channel.
    Parameters:
      `group` - The group to which the channel is bound, or `null` to bind to the default group
    Returns:
      The new channel
    Throws:
      `IllegalChannelGroupException` - If the provider that created the group differs from this provider
      `ShutdownChannelGroupException` - The group is shutdown
      `IOException` - If an I/O error occurs

  - ### openAsynchronousSocketChannel

    public abstract AsynchronousSocketChannel openAsynchronousSocketChannel(AsynchronousChannelGroup group) throws IOException
    Opens an asynchronous socket channel.
    Parameters:
      `group` - The group to which the channel is bound, or `null` to bind to the default group
    Returns:
      The new channel
    Throws:
      `IllegalChannelGroupException` - If the provider that created the group differs from this provider
      `ShutdownChannelGroupException` - The group is shutdown
      `IOException` - If an I/O error occurs