WEB开发网
开发学院软件开发Java Java AIO初探(异步网络IO) 阅读

Java AIO初探(异步网络IO)

 2009-09-22 00:00:00 来源:WEB开发网   
核心提示: java.nio.channels.CompletionHandler异步IO操作结果的回调接口,用于定义在IO操作完成后所作的回调工作,Java AIO初探(异步网络IO)(2),AIO的API允许两种方式来处理异步操作的结果:返回的Future模式或者注册CompletionHandler,

java.nio.channels.CompletionHandler

异步IO操作结果的回调接口,用于定义在IO操作完成后所作的回调工作。AIO的API允许两种方式来处理异步操作的结果:返回的Future模式或者注册CompletionHandler,我更推荐用CompletionHandler的方式,这些handler的调用是由 AsynchronousChannelGroup的线程池派发的。显然,线程池的大小是性能的关键因素。AsynchronousChannelGroup允许绑定不同的线程池,通过三个静态方法来创建:

 public static AsynchronousChannelGroup withFixedThreadPool(int nThreads,
                                                               ThreadFactory threadFactory)
        throws IOException
 public static AsynchronousChannelGroup withCachedThreadPool(ExecutorService executor,
                                                                int initialSize)
 public static AsynchronousChannelGroup withThreadPool(ExecutorService executor)
        throws IOException

需要根据具体应用相应调整,从框架角度出发,需要暴露这样的配置选项给用户。

在介绍完了aio引入的TCP的主要接口和类之后,我们来设想下一个aio框架应该怎么设计。参考非阻塞nio框架的设计,一般都是采用Reactor模式,Reacot负责事件的注册、select、事件的派发;相应地,异步IO有个Proactor模式,Proactor负责 CompletionHandler的派发,查看一个典型的IO写操作的流程来看两者的区别:

上一页  1 2 3 4 5 6 7  下一页

Tags:Java AIO 初探

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接