11. Java IO: Concurrent IO

想要查看此教程的目录请点击:Java IO教程目录贴地址


有时候你可能需要并发的处理输入或输出。换句话说,你可能需要开启多线程去写入或产生输出。比如,有也许有一个应用需要在磁盘上处理非常多的文件。这可以并行的去处理以增加性能。或者你可能有一个服务,像web服务或聊天服务器,需要接受很多单独的连接和请求。这些也可以并行处理以获得性能上的提升。

如果你需要并发IO,这里给你一些你应该注意的一些常见问题:

如果你没有办法保证每一个线程读取多少input,或线程是按什么顺序把数据写到输出流。你就不应该在同一时间有多个线程来从InputStream读数据。也不可以在同一时间有多个线程来把数据写到OutputStream。

如果线程有序执行的那么你可以有多个线程去使用stream、reader和writer。实际上,你可以有一个线程来决定是什么样类型的请求,然后把这个请求交给其他合适的线程去做进一步处理。当有序读取stream / reader / writer时候这样的是可行的。注意,这些传递stream的线程是需要同步的。

注意:在Java NIO中,你可以有一个线程读来读取或写入多个“channel”。当你打开许多网络连接,但是每个网络连接只有少量的数据,例如在一个聊天服务器中,你可以有一个线程来调度所有的“channel”(连接)。Java NIO是另外一回事了,会在后面的教程中讲解。

你可能感兴趣的:(11. Java IO: Concurrent IO)