通过关闭当前 运行 线程来关闭可执行文件
Closing an executable file by closing a currently running thread
我已经阅读了很多关于如何关闭当前 运行 线程的问题和答案,但很多人使用的方法 "desroy()" 已被弃用。
我在 Java 工作并编写了使用多线程同时多次打开记事本可执行文件的代码。我现在想关闭这些可执行文件。有没有办法通过 closing/ending 当前 运行 线程关闭这些文件而不调用已弃用的方法?
如果我需要详细说明或澄清任何要点,请随时告诉我。非常感谢您提供的任何帮助!
如果您在线程中启动一个进程,并且该进程完成或被 destroy()
ed,则线程可以自然完成。或者,您可以在不等待进程完成的情况下中断线程,尽管这不是您对该进程失去控制的想法。
注意:即使 Thread.destroy()
可用,它也不会终止在该线程中启动的进程。
简而言之,尝试从线程中停止进程 运行。
同步通知它停止(使用任何你想要的机制),加入它,然后让它收集垃圾。
我想使用已弃用的方法可能非常危险,这里有一篇关于此的不错的文章:https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html
您可以使用 Thread.interrupt 并在 运行() 方法中实现这样的捕获:
catch (InterruptedException ex){
Thread.currentThread().interrupt();
}
覆盖中断方法以关闭流:
private InputStream in;
@Override
public void interrupt() {
super.interrupt();
try {
in.close();
} catch (IOException e) {}
}
然后在您的方法 main() 中执行如下操作:
Thread t = new MyThread(in);
t.start();
Thread.sleep(1000);
t.interrupt();
t.join();
希望这会给您一些继续前进方向的想法..
我已经阅读了很多关于如何关闭当前 运行 线程的问题和答案,但很多人使用的方法 "desroy()" 已被弃用。
我在 Java 工作并编写了使用多线程同时多次打开记事本可执行文件的代码。我现在想关闭这些可执行文件。有没有办法通过 closing/ending 当前 运行 线程关闭这些文件而不调用已弃用的方法?
如果我需要详细说明或澄清任何要点,请随时告诉我。非常感谢您提供的任何帮助!
如果您在线程中启动一个进程,并且该进程完成或被 destroy()
ed,则线程可以自然完成。或者,您可以在不等待进程完成的情况下中断线程,尽管这不是您对该进程失去控制的想法。
注意:即使 Thread.destroy()
可用,它也不会终止在该线程中启动的进程。
简而言之,尝试从线程中停止进程 运行。
同步通知它停止(使用任何你想要的机制),加入它,然后让它收集垃圾。
我想使用已弃用的方法可能非常危险,这里有一篇关于此的不错的文章:https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html 您可以使用 Thread.interrupt 并在 运行() 方法中实现这样的捕获:
catch (InterruptedException ex){
Thread.currentThread().interrupt();
}
覆盖中断方法以关闭流:
private InputStream in;
@Override
public void interrupt() {
super.interrupt();
try {
in.close();
} catch (IOException e) {}
}
然后在您的方法 main() 中执行如下操作:
Thread t = new MyThread(in);
t.start();
Thread.sleep(1000);
t.interrupt();
t.join();
希望这会给您一些继续前进方向的想法..