想要查看此教程的目錄請點擊:Java IO教程目錄貼地址
有時候你可能需要并發的處理輸入或輸出。換句話說,你可能需要開啟多線程去寫入或產生輸出。比如,有也許有一個應用需要在磁盤上處理非常多的文件。這可以并行的去處理以增加性能。或者你可能有一個服務,像web服務或聊天服務器,需要接受很多單獨的連接和請求。這些也可以并行處理以獲得性能上的提升。
如果你需要并發IO,這里給你一些你應該注意的一些常見問題:
如果你沒有辦法保證每一個線程讀取多少input,或線程是按什么順序把數據寫到輸出流。你就不應該在同一時間有多個線程來從InputStream讀數據。也不可以在同一時間有多個線程來把數據寫到OutputStream。
如果線程有序執行的那么你可以有多個線程去使用stream、reader和writer。實際上,你可以有一個線程來決定是什么樣類型的請求,然后把這個請求交給其他合適的線程去做進一步處理。當有序讀取stream / reader / writer時候這樣的是可行的。注意,這些傳遞stream的線程是需要同步的。
注意:在Java NIO中,你可以有一個線程讀來讀取或寫入多個“channel”。當你打開許多網絡連接,但是每個網絡連接只有少量的數據,例如在一個聊天服務器中,你可以有一個線程來調度所有的“channel”(連接)。Java NIO是另外一回事了,會在后面的教程中講解。