gpt4 book ai didi

java - 为什么 Java 程序不终止

转载 作者:行者123 更新时间:2023-11-30 07:09:58 25 4
gpt4 key购买 nike

下面的代码检查 Java Concurrency 框架中 ExecutorCompletionService 的使用情况(使用的 IDE 是 Netbeans)。

但是程序并没有终止。为什么?

代码:

import java.util.concurrent.Callable;
import java.util.concurrent.CompletionService;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorCompletionService;
import java.util.concurrent.Executors;

public class TestFuture {

public static void main(String... args) throws InterruptedException, ExecutionException {
Executor ex = Executors.newCachedThreadPool();
CompletionService<Long> cs = new ExecutorCompletionService<Long>(ex);
cs.submit(new Worker());
cs.submit(new Worker());
cs.submit(new Worker());
for (int i = 0; i < 3; i++) {
long l = cs.take().get();
//utilize the result
System.out.println(l);
}
}
}

class Worker implements Callable {

@Override
public Long call() throws Exception {
//do some task and return back
return System.currentTimeMillis();
}
}

最佳答案

main 结束时,线程池中的线程将继续运行。这就是 JVM 不会关闭的原因。您需要使用守护线程,或显式关闭池。

这是一个例子:

ExecutorService ex = Executors.newCachedThreadPool();
// do all your submission work here
ex.shutdown();

关于java - 为什么 Java 程序不终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22557028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com