我确定之前已经问过这个问题,但在谷歌搜索之后,我找不到任何东西。
这是我的情况,我有多个线程写入文件,一个主线程创建一个打印编写器并处理创建文件并在一个finally块中关闭打印编写器/ catch循环。当我在eclipse中运行应用程序时,我会按停止/终止按钮,文件没有写入任何内容。我想确保我在这里做正确的事情,或者在执行终止时是否有更好的方法来处理关闭打印编写器。哎呀,如果有更好的方法来处理多个线程写入文件,我欢迎提出这个建议(我现在对多线程编程非常糟糕)。
答案 0 :(得分:2)
最终没有执行的事实很少见。
其中一个可能是:System.exit(0).
使用finally
假定始终执行finally块中的语句。
由于您的问题,请确保您的线程尚未执行您的finally块:确保在需要时使用同步 - 请始终使用unit-test进行检查。
答案 1 :(得分:2)
在调用finally块中的flush()
和close()
方法之前,需要将主线程连接到其他线程,以便主线程等待其他线程完成写入关闭之前的文件。