Dav*_*ave 5 java multithreading stream mkfifo bufferedreader
我有一个多线程程序,我在其中打开一个BufferedReader从FIFO(named Pipe)文件中读取内容.由于我想实现流类型的解决方案来连续读取FIFO文件中的文本,我在线程任务运行之外创建了一个BufferedReader,并且只要应用程序正在运行就希望永远保持打开状态.(bufferedReader上没有close())使用ThreadPool中有限的(比如10个)线程将继续查找FIFO文件中的文本并进一步处理该文本.当我使用FIFO时,它永远不会达到END OF FILE.
通过执行此操作,对于较小的输入文件,它成功读取,对于大型输入文件,它会抛出Stream closed IOexception(偶尔).它自动关闭,我没有close()声明.我有一个代码来获取和关闭semaphore lock我br.readLine()用来处理竞争条件问题的地方
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]
Run Code Online (Sandbox Code Playgroud)
题: