我可以理解为什么网络应用会使用多路复用(不创建太多线程),以及为什么程序会使用异步调用进行流水线操作(更高效).但我不明白AsynchronousFileChannel的效率目的.
有任何想法吗?
它是一个可以用来异步读取文件的通道,即I/O操作是在一个单独的线程上完成的,这样你调用它的线程可以在I/O操作发生时做其他事情.
例如:read()类的方法返回一个Future对象以获取从文件中读取数据的结果.所以,你可以做的是调用read(),它将立即返回一个Future对象.在后台,另一个线程将从文件中读取实际数据.您自己的线程可以继续执行操作,当需要读取数据时,您可以调用get()该Future对象.然后,这将返回数据(如果后台线程尚未完成读取数据,它将使您的线程阻塞,直到数据准备好).这样做的好处是你的线程不必等待读取操作的整个长度; 在真正需要数据之前,它可以做其他一些事情.
请参阅文档.
请注意,这AsynchronousFileChannel将是Java SE 7中的一个新类,尚未发布.
| 归档时间: |
|
| 查看次数: |
5881 次 |
| 最近记录: |