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

时间:2016-06-21 20:50:47

标签: java multithreading deprecated

我已经阅读了许多关于如何关闭当前正在运行的线程的问题和答案,但是许多人使用了不推荐使用的方法“desroy()”。

我正在使用Java编写代码,该代码使用多线程同时多次打开Notepad可执行文件。我现在想要关闭这些可执行文件。有没有办法通过关闭/结束当前运行的线程来关闭这些文件而不调用不推荐的方法?

如果我需要详细说明或澄清任何要点,请随时告诉我。非常感谢您提供的任何帮助!

3 个答案:

答案 0 :(得分:0)

如果您在线程中启动进程并且该进程完成或destroy(),则线程可以自然完成。或者你可以在不等待进程完成的情况下中断线程,但这并不是因为你失去了对该进程的控制。

注意:即使Thread.destroy()可用,它也没有杀死在该线程中启动的进程。

简而言之,尝试从线程中停止Process运行。

答案 1 :(得分:0)

同步发出信号停止(使用你想要的任何机制),加入它,然后让它被垃圾收集。

答案 2 :(得分:0)

我认为使用弃用的方法可能非常危险,这里有关于此的好文章:https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html 您可以使用Thread.interrupt并在run()方法中实现这样的catch:

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

希望这会给你一些想法继续下去的想法..