Class OioDatagramChannelFactory

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

public class OioDatagramChannelFactory extends Object implements DatagramChannelFactory
A DatagramChannelFactory which creates a blocking I/O based DatagramChannel. It utilizes the good old blocking I/O API which has support for multicast.

How threads work

There is only one type of threads in OioDatagramChannelFactory; worker threads.

Worker threads

Each Channel has a dedicated worker thread, just like a traditional blocking I/O thread model.

Life cycle of threads and graceful shutdown

Worker threads are acquired from the Executor which was specified when a OioDatagramChannelFactory was created (i.e. workerExecutor.) Therefore, you should make sure the specified Executor is able to lend the sufficient number of threads.

Worker threads are acquired lazily, and then released when there's nothing left to process. All the related resources 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

A DatagramChannel created by this factory does not support asynchronous operations. Any I/O requests such as "write" will be performed in a blocking manner.