通过关闭当前 运行 线程来关闭可执行文件

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(); 

希望这会给您一些继续前进方向的想法..