Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 运行时停止线程_Java_Multithreading - Fatal编程技术网

Java 运行时停止线程

Java 运行时停止线程,java,multithreading,Java,Multithreading,我正在制作一个keylog,keylog的代码在一个扩展线程类中。我放了一个类似于布尔运算的变量,代码如下: public void run() { while(running) try { Config conf = new Config(); System.setOut(new PrintStream(new File("keylog/output-file.txt"))); GlobalScr

我正在制作一个keylog,keylog的代码在一个扩展线程类中。我放了一个类似于布尔运算的变量,代码如下:

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 stopKeylog() {
    running=false;
}
但是,当我停止线程时,我将看到输出的txt文件,并且带有bug。
当我在(运行)输出时删除
时,输出工作正常。

如果有帮助,可以快速输入一些信息: 1.让跑步变得不稳定
2.关闭PrintStream(不确定是否有用)

我想你应该用volatile modifier定义你的运行变量,你确定要在循环中包含所有代码吗?您不希望每次都创建一个新的
new Config()
。您可能正在添加无数的
Keylog(conf)
实例。请解释一下你的代码是做什么的。@nikolayYashchenko我有私人布尔运算@karlRichter如果我在运行时删除,我的代码会将所有按下的键保存在一个txt文件中,但当我把while,txt文件,mkaes a while iin键也放在里面,所以保持更多的不太像:keyPrssed:a keyPrssed:a keyPrssed:a keyPrssed:a keyPrssed:a当我把文件放在易失性的txt文件中时,不要捕获按下的键