NIO同步非阻塞与AIO异步非阻塞IO
IO的两个重要步骤:发起IO请求,和实际的IO操作。
在unix网络编程的定义里异步和非异步概念的区别就是实际的IO操作是否阻塞。如果不阻塞就是异步,如果阻塞就是同步。
而阻塞和非阻塞的区别在于发起IO请求的时候是否会阻塞,如果会就是阻塞,不会就是非阻塞。
NIO:同步非阻塞IO
参考如下
同步需要主动去询问结果
http://weixiaolu.iteye.com/blog/1479656
http://www.ibm.com/developerworks/cn/education/java/j-nio/j-nio.html
AIO:异步非阻塞IO,使用了异步Future
异步是在结果返回时,接收到通知
http://www.iteye.com/topic/1113611
AIO采用Future 模式或者注册CompletionHandler回调
FutureTask是Future的实现类
FutureTask futureTask = new FutureTask(new Callable(){public void call(){}});
ThreadPool.submit(futureTask );
......................
futureTask.get();//这个是阻塞的,可以启一个线程来获取