java - 线程在打印之前完成执行

标签 java multithreading buffer

我在执行一些代码时正在写入文件(Java)。您可以在下面找到所使用的代码,该代码由 JVM 调用的“线程 B”执行。

writer = new PrintWriter(new BufferedWriter(new FileWriter("table.csv")));

(...)


while ( (m_bEnExecution) && (!m_bFinTestRules) ) {

   //Calculate new rule
   CalculateNewRule(writer);
}

writer.close();

在CalculateNewRule 方法中,创建了一个AssociationRule 的新实例,它将接收writer 作为实例变量。 AssociationRule 内的函数之一执行打印。

writer.println(outputRule);
writer.flush();

问题似乎是这个函数是由 AWT 线程调用的,并且在CalculateNewRule(writer)方法内要写入文件的最后一行永远不会被写入,除非我显式强制执行线程在 while 循环之后停止。知道可能是什么问题吗?有没有优雅的方法来处理这个问题?

在一个答案中,建议我将打印线程设置为守护线程,但我不知道如何在该特定线程上执行此操作。

最佳答案

可能是调用线程在该线程完成之前就已经结束了。如果是这种情况,请使用守护线程。 提供更多详细信息也许我们可以提供帮助。

关于java - 线程在打印之前完成执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28210238/

相关文章:

multithreading - 如何同时在两个不同的线程中执行 PyObject_CallObject()?

python - 如何退出正在运行线程的Python程序?

c# - ToDictionary() 是否创建副本或引用?

ios - AudioFileReadPackets 给出了奇怪的数据

javascript - Node 缓冲区 : How to read out bit flags?

node.js - Node JS获取PDF缓冲区的第一页

java - 引用 war 内的文件

java - 在 Windows XP 上运行的开源 OCR 库

eclipse - HelloWorld 程序上出现 NoClassDefFoundError

java - 如何取消选中 AlertDialog(setMultiChoiceItems)中的项目?