我有一个应用程序有一个连续运行的线程,写入文件。它应该终止点击按钮。但这会导致异常泛滥,迫使应用程序终止。我尝试使用stop()函数,但这不起作用。任何人都可以建议一个方法(代码,如果可能的话)来安全地终止线程并关闭文件。
答案 0 :(得分:1)
Java中的线程是合作的:你无法阻止来自外部的线程,你只能发出信号来阻止线程自动停止(即退出run方法)。
要发信号停止,只需要一个布尔字段running=true
,该线程检查它的主循环。当running==false
线程退出run()
方法时。
在您的特定情况下,根据您如何读取要写入文件的数据,它可能会有点棘手。您是否使用任何阻塞读取调用来读取数据?
答案 1 :(得分:0)
对于帖子:
public void run() {
while (running) {
// write each line to file here
{
// close file
}
对于按钮的onClick()
添加:
running=false;
myThread.join(); // enclose in try/catch and while loop appropriately to ensure the thread ends