Reactor Pattern and Non-blocking IO--reference
2014-05-03 23:14
555 查看
reference from:http://www.cs.bgu.ac.il/~spl051/Personal_material/Practical_sessions/Ps_12/ps12.html
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
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
相关文章推荐
- Reactor Pattern and Non-blocking IO
- Java Non-Blocking and Asynchronous IO with NIO & NIO.2 (JSR203) - Reactor/Proactor Implementations
- the reactor pattern and java nio
- Reactor An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Even
- Reactor Pattern Explained - Part 1, 2 and 3
- 阻塞与非阻塞(blocking and non-blocking)
- Pattern Recognition and Machine Learning 第四章 线性分类模型
- SimpleFactory Pattern,MethodFactory Pattern and AbstrctFactory Pattern
- [转载 收藏]6 important .NET concepts: - Stack, heap, Value types, reference types, boxing and Unboxing.
- Reconfigure HAS and CSS for nonRAC ASM on 11.2
- Illegal resource reference: @*android resources are private and not always present 解决方案
- Reactor Pattern Explained
- [抄书]The Pipes and Filters pattern
- 关于Blocking IO, Non-Blocking IO 和 Asynchronous I/O的理解
- 今天开始学习模式识别与机器学习Pattern Recognition and Machine Learning (PRML),章节5.1,Neural Networks神经网络-前向网络。
- Command-line reference for the SharePoint Products and Technologies Configuration Wizard
- C#值类型与引用类型(Value Type and Reference Type)
- MathJax basic tutorial and quick reference
- ....conflicts with existing, non-compatible bean definition of same name and class
- The difference of adapter pattern and bridge pattern