13 java io bufferedreader
我在Java中有两个线程.
第一个线程正在关闭bufferedreader(br.close())
当第二个线程在同一个阅读器上读取时,我得到了一个 IOException (Stream Closed)
即使我使用,我也会得到这个例外 br.ready()
有没有办法知道流是否已经关闭?
ready()如果关闭,该方法将抛出异常.但即使您添加了一个封闭的检查方法,只要在调用之间释放锁定(它用于BufferedReader),读取器可能会在您读取时关闭.
我看到三个选择:
BufferedReader扩展的子类close()来设置您自己的变量,该变量可用于检查读取器是否已关闭.这也需要覆盖很多方法,如果你想要它做一些旁边的事情,你可以用一个封闭的阅读器做你想要的任何行为IOException.ready()和read()调用分组到同一个同步块中.我认为没有任何方法可以直接调用来判断流是否关闭。
如果您确实需要有两个线程共享此读取器,那么最好的选择可能是让一个线程回调另一个线程,或者设置一个标志来通知它流已关闭,以便另一个线程知道不要尝试从中阅读。
| 归档时间: |
|
| 查看次数: |
23175 次 |
| 最近记录: |