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

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home...
    光劍書架上的書閱讀 3,937評論 2 8
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,933評論 18 139
  • 參考:http://ifeve.com/non-blocking-server/原文地址 目錄 Java NIO教...
    步積閱讀 4,255評論 1 13
  • 從三月份找實習到現在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發崗...
    時芥藍閱讀 42,366評論 11 349
  • 最近渣男這個詞很流行,一旦某男被冠上此名,仿佛他就罪無可赦,就是垃圾一坨,甚至丟之棄之唾之仍不快之。 然而在某個夜...
    窗外陽光閱讀 560評論 8 12