Java 任务不执行任何操作



我有一个程序,其中我使用由ExecutorService控制的多个任务。我实际上使用了 Runnable,现在将其更改为任务,但是我似乎做错了什么,因为我的任务中应该发生的一切都愉快。我应该提到,程序没有完成,它无限运行。有人可以告诉我我错过了什么吗?

public class Test{
    ExecutorService exec;
    public Test (){
        exec = Executors.newCachedThreadPool();
        run();
    }
    public static void main(String[] args) {
        Test test = new Test();
    }
    private void run() {
        System.out.println("This works normal");
        Task<Void> task = new Task<Void>() {
            @Override
            protected Void call(){
                System.out.println("Here nothing happens already");
                for (int i = 0; i < 10; i++)
                    exec.submit(() -> { System.out.println("Offcourse no sub-task works either"); });
                return null;
            }
        };
        exec.submit(task);
    }
}

这些是我的进口:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import javafx.concurrent.Task;

我使用:
- Netbeans IDE 8.2
-爪哇岛
- 视窗 10 专业版

作为一个不寻常的功能,Task(它是javafx包的一部分(实现了CallableRunnable。当您将任务提交到ExecutorService时,它会调用 Task.run 方法,该方法在 Task 中有一个空的存根实现。如果在匿名类中重写run,则会看到代码运行。

您是否考虑过直接从Callable创建一个匿名类?或者您是有意使用 Task 类,因为您正在使用 JavaFX?

如果您正在使用 JavaFX 并且有意使用 Task ,则 Task API 建议如下:

尽管ExecutorService定义了几种方法,这些方法采用 可运行,您通常应限制自己使用执行 方法继承自执行程序。

任务接口

call方法通常用于使用服务的情况

要关闭ExecutorService,您应该调用exec.shutdown()

相关内容

  • 没有找到相关文章

最新更新