运行时停止线程

时间:2017-07-05 11:11:56

标签: java multithreading

我正在创建一个键盘记录,并且keylog的代码在一个类中扩展了Thread。我把一个布尔运行像变量,我有这个代码:

public void run() {
    while(running)
        try {
            Config conf = new Config();
            System.setOut(new PrintStream(new File("keylog/output-file.txt")));

            GlobalScreen.registerNativeHook();

            GlobalScreen.getInstance().addNativeKeyListener(new Keylog(conf));

        } catch (FileNotFoundException | NativeHookException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
}

我有另一个void方法来停止线程

void stopKeylog() {
    running=false;
}

但是,当我停止线程时,我会看到输出txt文件并且有bug。 当我删除while(running)输出时,效果非常好。

1 个答案:

答案 0 :(得分:0)

如果有帮助,很少有快速输入: 1.让运行变得不稳定 2.关闭PrintStream(不确定它是否有帮助)