XNIO Concepts: Difference between revisions
Line 21: | Line 21: | ||
==I/O Thread== | ==I/O Thread== | ||
The I/O threads run non-blocking handlers. The I/O threads come in two types: | The I/O threads run non-blocking handlers. They run in a loop, which does three things: 1) runs any tasks that have been scheduled for execution by the I/O thread, 2) runs any scheduled tasks that have hit their timeout and 3) call <tt>Selector.start()</tt> and then invoke any callbacks for the selected keys. | ||
The I/O threads come in two types: | |||
* '''Read threads''' that can handle callbacks for read events. | * '''Read threads''' that can handle callbacks for read events. | ||
* '''Write threads''' that can handle callback for write events. | * '''Write threads''' that can handle callback for write events. |
Revision as of 02:52, 19 January 2016
Internal
Overview
XNIO is a simplified low-level I/O layer, built in top of Java NIO. It has an API for combining blocking and non-blocking operations, even on the same channel.
NIO Concepts
XNIO Worker
- https://docs.jboss.org/author/display/XNIO/Workers
- http://docs.jboss.org/xnio/3.1/api/index.html?org/xnio/XnioWorker.html
An XNIO worker is the central point of coordination for a network application. It manages several kind of threads, and the threads created by the worker are tagged with the worker name. A worker has two different types of thread pools:
I/O Thread
The I/O threads run non-blocking handlers. They run in a loop, which does three things: 1) runs any tasks that have been scheduled for execution by the I/O thread, 2) runs any scheduled tasks that have hit their timeout and 3) call Selector.start() and then invoke any callbacks for the selected keys.
The I/O threads come in two types:
- Read threads that can handle callbacks for read events.
- Write threads that can handle callback for write events.
Worker Thread
Worker threads are used for blocking tasks (such as servlet invocations). The worker threads are managed by a standard Executor-based thread pool.
Channel
XNIO provides a channel abstraction that hides the underlying transport. Channels are notified of events using the ChannelListener API. Upon creation, channels are assigned an I/O Thread, which will be used to execute all ChannelListener invocations for the channel.