java - 单击按钮停止 Java 中正在进行的进程(线程)

标签 java multithreading destroy

我有以下两个按钮:

 jButton2.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {

            Thread t = new Thread() {
                public void run() {
                    StreamingExperiment.streamingExperimentMain();
                }
            };
            t.setName("runThread");
            t.start();

        }
    });

 jButton3.setText("Cancel");
    jButton3.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {

        }
    });

JButton3 实际上是一个取消按钮,必须取消正在进行的 StreamingExperiment。在这种情况下我应该如何停止正在进行的线程?

最佳答案

你不能只停止任何线程*。你可以试试interrupting它:

t.interrupt();

但是线程必须能够处理它。这就带来了一个问题,什么作用:

StreamingExperiment.streamingExperimentMain();

实际上呢?如果执行 CPU 密集型操作,线程必须定期检查 isInterrupted()如果它恰好被设置,则标记并终止。如果它等待 I/O 或 hibernate ,它很可能正常工作 - 参见InterruptedException .

好吧,从技术上讲你 can ,但由于某种原因,此方法已被弃用。

关于java - 单击按钮停止 Java 中正在进行的进程(线程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9658883/

相关文章:

java - 删除非字母数字字符之间的空格

java - 使用 Canvas 和位图的全屏图像

java - 在规定的时间后使用managedexecutorservice关闭线程

java - Java中的多线程通信

c++ - 多线程基准测试问题

javascript - 使用 Mootools 理解类

java - GenerationType.SEQUENCE 不在 hibernate 中生成序列

java - ClassCastException : cant be cast to java. lang.Integer

android - 通过单击旁边的 DialogActivity 来销毁它

Spring 的初始化和销毁​​方法