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是另外一回事了,会在后面的教程中讲解。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home...
    光剑书架上的书阅读 9,430评论 2 8
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,828评论 19 139
  • 参考:http://ifeve.com/non-blocking-server/原文地址 目录 Java NIO教...
    步积阅读 9,847评论 1 13
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,486评论 11 349
  • 最近渣男这个词很流行,一旦某男被冠上此名,仿佛他就罪无可赦,就是垃圾一坨,甚至丢之弃之唾之仍不快之。 然而在某个夜...
    窗外阳光阅读 3,584评论 8 12

友情链接更多精彩内容