·Java server class with multiple client connections: one-to-one ratio of threads to clients,therefore enormous thread overhead,resulted in performance problems and lack of scalability. The main problem is blocking I/O calls.
·JDK 1.4 supports non-blocking I/O calls (java.nioandjava.nio.channels).These packages were designed principally according to Reactor design pattern (Using Design Patterns to Develop Reusable Object-Oriented Communication SoftwarebyDouglas C. Schmidt).
The actors in Reactor pattern are:
•Handles,which identify resources (such as network connections,open files,and synchronization
objects) that are managed by an operating system.
•Reactor,which defines an interface for registering,removing,and dispatchingEvent Handler
objects. An implementation of theReactorinterface provides a set of application-independent
event demultiplexing and dispatching mechanisms. These mechanisms dispatch application-specific
Event Handlerin response to events occurring on one or moreHandles.
•Event Handler,which specifies an interface used by theReactorto dispatch callback methods
defined by objects that are pre-registered to handle certain types of events (such as input events,
output events,and signals).
•Concrete Event Handler,which implements the customized callback method(s) that process events
in an application-specific manner.
Using Reactor in Communication Software
- Short tutorial
- Important classes injava.nio.channels:
- java.nio:ByteBuffer
Example
- Reactor
- ConnectionAcceptor(Event Handle)
- ConnectionReader(Event Handle)
- MessageProcessorTask
- SimpleClient
- ThreadPool