[英]What happens if I do not close BufferedReader in java? (Stream type reading in multi-threaded program)
我有一個多線程程序,其中打開BufferedReader
以從FIFO(named Pipe)
文件中讀取內容。 因為我要實現解決方案的流類型以連續從FIFO文件讀取文本,所以我在線程任務運行之外創建了BufferedReader,並且希望在應用程序運行時一直保持打開狀態。(bufferedReader上沒有close())在有限的情況下(假設為10),ThreadPool中的線程將繼續在FIFO文件中查找文本,並進一步處理該文本。 當我使用FIFO時,它將永遠不會到達文件尾。
這樣,對於較小的輸入文件,它會成功讀取;對於較大的輸入文件,它會拋出Stream closed IOexception
(偶爾)。 它會自動關閉,我沒有close()
語句。 我在我使用br.readLine()
處理競爭狀況問題的地方獲取並關閉了semaphore lock
的代碼到位
java.io.IOException: Stream closed
at java.io.BufferedReader.ensureOpen(BufferedReader.java:122) ~[?:1.8.0_152]
at java.io.BufferedReader.readLine(BufferedReader.java:317) ~[?:1.8.0_152]
at java.io.BufferedReader.readLine(BufferedReader.java:389) ~[?:1.8.0_152]
題:
BufferedReader不是線程安全的類,因此,當嘗試從不同的線程使用該類的同一對象時,我們會得到無數的各種錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.