做游戏排行榜的网站模板,成都的网站建设开发公司哪家好,美食健康网站的建设,营销型企业网站怎么制作转载自 Java IO: 并发IO译文链接 作者: Jakob Jenkov 译者: 李璟
有时候你可能需要并发地处理输入和输出。换句话说#xff0c;你可能有超过一个线程处理输入和产生输出。比如#xff0c;你有一个程序需要处理磁盘上的大量文件#xff0c;这个任务可以通过并发操作提高性能…转载自 Java IO: 并发IO译文链接 作者: Jakob Jenkov 译者: 李璟
有时候你可能需要并发地处理输入和输出。换句话说你可能有超过一个线程处理输入和产生输出。比如你有一个程序需要处理磁盘上的大量文件这个任务可以通过并发操作提高性能。又比如你有一个web服务器或者聊天服务器接收许多连接和请求这些任务都可以通过并发获得性能的提升。如果你需要并发处理IO这里有几个问题可能需要注意一下
在同一时刻不能有多个线程同时从InputStream或者Reader中读取数据也不能同时往OutputStream或者Writer里写数据。你没有办法保证每个线程读取多少数据以及多个线程写数据时的顺序。
如果线程之间能够保证操作的顺序它们可以使用同一个stream、reader、writer。比如你有一个线程判断当前的输入流来自哪种类型的请求然后将流数据传递给其他合适的线程做后续处理。当有序存取流、reader、writer时这种做法是可行的。请注意在线程之间传递流数据的代码应当是同步的。
注意在Java NIO中你可以让一个线程读写多个“channel”。比如你有很多网络连接处于开启状态但是每个连接中都只有少量数据类似于聊天服务器可以让一个线程监视多个频道(连接)。Java NIO是另一个话题了会后续教程中介绍。