Java IO: 并发IO
轉(zhuǎn)載自? ?Java IO: 并發(fā)IO
譯文鏈接?作者: Jakob Jenkov 譯者: 李璟
有時候你可能需要并發(fā)地處理輸入和輸出。換句話說,你可能有超過一個線程處理輸入和產(chǎn)生輸出。比如,你有一個程序需要處理磁盤上的大量文件,這個任務(wù)可以通過并發(fā)操作提高性能。又比如,你有一個web服務(wù)器或者聊天服務(wù)器,接收許多連接和請求,這些任務(wù)都可以通過并發(fā)獲得性能的提升。
如果你需要并發(fā)處理IO,這里有幾個問題可能需要注意一下:
在同一時刻不能有多個線程同時從InputStream或者Reader中讀取數(shù)據(jù),也不能同時往OutputStream或者Writer里寫數(shù)據(jù)。你沒有辦法保證每個線程讀取多少數(shù)據(jù),以及多個線程寫數(shù)據(jù)時的順序。
如果線程之間能夠保證操作的順序,它們可以使用同一個stream、reader、writer。比如,你有一個線程判斷當(dāng)前的輸入流來自哪種類型的請求,然后將流數(shù)據(jù)傳遞給其他合適的線程做后續(xù)處理。當(dāng)有序存取流、reader、writer時,這種做法是可行的。請注意,在線程之間傳遞流數(shù)據(jù)的代碼應(yīng)當(dāng)是同步的。
注意:在Java NIO中,你可以讓一個線程讀寫多個“channel”。比如,你有很多網(wǎng)絡(luò)連接處于開啟狀態(tài),但是每個連接中都只有少量數(shù)據(jù),類似于聊天服務(wù)器,可以讓一個線程監(jiān)視多個頻道(連接)。Java NIO是另一個話題了,會后續(xù)教程中介紹。
總結(jié)
以上是生活随笔為你收集整理的Java IO: 并发IO的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剑灵电脑配置2022(剑灵 电脑 配置)
- 下一篇: 剑灵配置电脑配置低(剑灵配置电脑配置)