使用java.io包的Java Reactor模式

时间:2012-03-29 19:49:50

标签: java io nio reactor

我在Minecraft和JIrcs这样的应用程序源中看到,他们都使用java.io来实现Reactor Plugin(如果我没有错),也在这个article中。那么,实现Reactor Pattern时java.io和java.nio有什么区别?我的意思是,像性能优势,流程效率等,如果你认为java.io是实现Reactor Pattern的好解决方案,我可以获得良好的教程(因为谷歌给了我大量的java.nio tuts而不是我想要的java.io)

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

我希望您能通过以下information taken from the book得出结论 在第42页

  

java.io. *类使用装饰器设计模式。装饰者   设计模式在运行时将责任附加到对象。   装饰器比继承更灵活,因为   继承在编译时将责任附加到类。 java.io. *类使用装饰器模式构造不同的   基于某些基本类的运行时行为组合。

和43。

  

Java不再适合开发执行某项计划的程序   很多I / O操作。此外,通常需要的任务,如文件   锁定,非阻塞和异步I / O操作和能力   映射文件到内存不可用。非阻塞I / O操作   是通过多线程或使用JNI等工作实现的。   J2SE 1/4中的新I / O API (又名 NIO )已更改此设置   情况。          服务器有效处理多个客户端请求的可用性取决于它如何使用I / O流。当服务器必须时   同时处理数百个客户端,它必须能够使用I / O.   服务并发,在Java中迎合这种情况的一种方法是   使用线程,但几乎一比一的线程(100个客户端   将有100个线程)容易出现异常的线程开销并且可以   由于完善而导致性能和可扩展性问题   内存堆栈(即每个线程都有其堆栈,请参阅 Q34 ,    Q42 在Java部分中)和 CPU上下文切换(即在线程之间切换而不是进行实际计算)。要克服   这个问题,一组新的非阻塞I / O类已经存在   在java.nio包中引入Java平台。非阻塞   I / O机制围绕选择器和通道构建。 渠道下,   缓冲区选择器是NIO的核心。

read more。 以下是一些提供Java IO与Java NIO的参考链接: Java IO Faster Than NIO – Old is New Again!Java IO vs Java NIOIO vs. NIO – Interruptions, Timeouts and Buffers

答案 2 :(得分:0)

了解阻塞和非阻塞I / O之间的区别非常重要。 java.io包不支持非阻塞I / O,因此它不会扩展到大量连接。此外,通过阻塞I / O,您只能使用可怕的 one-client-to-one-thread模型,这完全不适合低延迟系统。我建议你看看我写的关于实现反应器模式的异步网络I / O库的this article,这样你就可以理解非阻塞如何在高性能系统中发挥关键作用。