Class NioDatagramChannelFactory

java.lang.Object
org.jboss.netty.channel.socket.nio.NioDatagramChannelFactory
All Implemented Interfaces:
ChannelFactory, DatagramChannelFactory, ExternalResourceReleasable

public class NioDatagramChannelFactory extends Object implements DatagramChannelFactory
A DatagramChannelFactory that creates a NIO-based connectionless DatagramChannel. It utilizes the non-blocking I/O mode which was introduced with NIO to serve many number of concurrent connections efficiently.

How threads work

There is only one thread type in a NioDatagramChannelFactory; worker threads.

Worker threads

One NioDatagramChannelFactory can have one or more worker threads. A worker thread performs non-blocking read and write for one or more DatagramChannels in a non-blocking mode.

Life cycle of threads and graceful shutdown

All worker threads are acquired from the Executor which was specified when a NioDatagramChannelFactory was created. Therefore, you should make sure the specified Executor is able to lend the sufficient number of threads. It is the best bet to specify a cached thread pool.

All worker threads are acquired lazily, and then released when there's nothing left to process. All the related resources such as Selector are also released when the worker threads are released. Therefore, to shut down a service gracefully, you should do the following:

  1. close all channels created by the factory usually using ChannelGroup.close(), and
  2. call releaseExternalResources().
Please make sure not to shut down the executor until all channels are closed. Otherwise, you will end up with a RejectedExecutionException and the related resources might not be released properly.

Limitation

Multicast is not supported. Please use OioDatagramChannelFactory instead.