相关疑难解决方法(0)

如何取消正在运行的任务并将其替换为同一线程上的新任务?

我想取消正在运行的任务并将其替换为同一线程上的新任务。

在下面的代码中,我使用了一个单线程执行器来启动一个新任务并捕获一个Future代表它的。然后我用Future取消了任务。但是,任务并没有取消。

  1. 为什么我的代码不起作用?
  2. 如何取消正在运行的任务并将其替换为同一线程上的新任务?

示例代码:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

class Task implements Runnable {
    public void run() {
        System.out.println("New task started");
        int i = 0; while (true) i++;
    }
}

public class TaskLauncher extends JFrame {
    private JButton button = new JButton("Start new task");
    private ExecutorService executor = Executors.newSingleThreadExecutor();
    private Future<?> future;

    public TaskLauncher() {
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) …
Run Code Online (Sandbox Code Playgroud)

java concurrency swing

4
推荐指数
1
解决办法
648
查看次数

标签 统计

concurrency ×1

java ×1

swing ×1