Reactor Pattern and Non-blocking IO
2013-11-26 00:00
148 查看
· 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.nio and java.nio.channels). These packages were designed principally according to Reactor design pattern (Using Design Patterns to Develop Reusable Object-Oriented Communication Software by Douglas 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 dispatching Event Handler
objects. An implementation of the Reactor interface provides a set of application-independent
event demultiplexing and dispatching mechanisms. These mechanisms dispatch application-specific
Event Handler in response to events occurring on one or more Handles.
• Event Handler, which specifies an interface used by the Reactor to 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 in java.nio.channels:
SocketChannel, ServerSocketChannel
Selector (Reactor)
SelectionKey
java.nio: ByteBuffer
Example
Reactor
ConnectionAcceptor (Event Handle)
ConnectionReader (Event Handle)
MessageProcessorTask
SimpleClient
ThreadPool
· JDK 1.4 supports non-blocking I/O calls (java.nio and java.nio.channels). These packages were designed principally according to Reactor design pattern (Using Design Patterns to Develop Reusable Object-Oriented Communication Software by Douglas 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 dispatching Event Handler
objects. An implementation of the Reactor interface provides a set of application-independent
event demultiplexing and dispatching mechanisms. These mechanisms dispatch application-specific
Event Handler in response to events occurring on one or more Handles.
• Event Handler, which specifies an interface used by the Reactor to 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 in java.nio.channels:
SocketChannel, ServerSocketChannel
Selector (Reactor)
SelectionKey
java.nio: ByteBuffer
Example
Reactor
ConnectionAcceptor (Event Handle)
ConnectionReader (Event Handle)
MessageProcessorTask
SimpleClient
ThreadPool
相关文章推荐
- Reactor Pattern and Non-blocking IO--reference
- the reactor pattern and java nio
- Reactor Pattern Explained - Part 1, 2 and 3
- Reactor An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Even
- Java Non-Blocking and Asynchronous IO with NIO & NIO.2 (JSR203) - Reactor/Proactor Implementations
- springmvc url-pattern and static resources
- Existence and nonexistence results for anisotropic quasilinear elliptic equations
- Clustered Index and Non-Clustered Index
- Servlet , Servlet Mapping and Pattern the HTML
- [抄书]The Pipes and Filters pattern
- SSIS 阻塞,半阻塞和全阻塞 (Non-blocking, semi-blocking and Fully-blocking) transformations清单
- 今天开始学Pattern Recognition and Machine Learning (PRML),章节5.2-5.3,Neural Networks神经网络训练(BP算法)
- Lazy Initialization and the DAO pattern with Hibernate and Spring(1)
- Provider Model Design Pattern and Specification ,(MSDN)
- Head First Design Pattern - 2 - A Subject and Observer spar over the right way to get state information to the Observer
- decorator pattern and linked list
- Provider Model Design Pattern and Specification, Part 1
- CVPR(IEEE Conference on Computer Vision and Pattern Recognition)
- Why I can't use non-string key in the myMap[myKey] expression? And what to do now?
- mysql:Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column