Java 运行时停止线程
我正在制作一个keylog,keylog的代码在一个扩展线程类中。我放了一个类似于布尔运算的变量,代码如下: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
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文件中时,不要捕获按下的键