gpt4 book ai didi

java - 各个worker之间共享executor服务

转载 作者:行者123 更新时间:2023-12-01 09:54:52 25 4
gpt4 key购买 nike

我想在各种读取器对象之间使用公共(public)线程池。每个读取器将使用池中的线程异步读取。这是我定义执行者的方式:

public static ExecutorService executor = Executors.newFixedThreadPool();

我想在 TableReader 对象中使用它。例如,有一个函数 readRows 如下所示:

executor.submit(new AsyncRowReader(...));

但是,我不确定如何处理 shutdown() 步骤。 TableReader 是 jar 的一部分,可以像这样使用:

TableReader r = new TableReader(...);
while (not done) {
r.readRow(...);
}

单个应用程序中可能有多个 TableReader 对象。所有这些完成后,我可以关闭执行程序服务。如何检测没有更多任务在运行?我可以使用其他类型的线程池吗?

最佳答案

听起来你需要一个 ExecutorCompletionService :

ExecutorCompletionService completionService = new ExecutorCompletionService(executor);

while (completionService.poll() != null) {
System.out.println("Still working...");
}

executor.shutdown();

关于java - 各个worker之间共享executor服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37330605/

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