[英]Java task does nothing?
我有一个程序,在其中我使用了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
-Java
-Windows 10专业版
作为一项不寻常的功能, Task
(属于javafx包的一部分)同时实现Callable
和Runnable
。 当您将Task提交给ExecutorService
它将调用Task.run
方法,该方法在Task
具有空的, Task.run
实现。 如果您在匿名类中覆盖run
,那么您将看到代码运行。
您是否考虑过直接从Callable
创建一个匿名类? 还是因为使用JavaFX而有意使用Task
类?
如果您正在使用JavaFX并有意使用Task
,那么Task
API建议以下内容:
尽管ExecutorService定义了几种采用Runnable的方法,但通常应限制自己使用从Executor继承的execute方法。
call
方法通常用于您使用服务时
要关闭ExecutorService
,您应调用exec.shutdown()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.