gpt4 book ai didi

java - 阻塞线程上有 ExecutorService 吗?

转载 作者:行者123 更新时间:2023-12-04 05:31:56 25 4
gpt4 key购买 nike

有没有ExecutorService允许现有线程执行执行而不是产生新线程?如果它是 ScheduledExecutor,则额外奖励。大多数执行程序产生工作线程来执行,但我希望工作线程是我所在的现有线程。这是我想象的API:

while (!executor.isTerminated()) {
Runnable r = executor.take();
r.run();
}

这类似于 SWT 和 JavaFX 允许主线程调度事件的方式,而不是 Swing,后者需要派生自己的事件调度线程来处理事件。

动机:我目前有很多地方可以让线程生成一个新的执行程序,然后调用 awaitTermination() 等待它完成。我想节省一些资源并防止堆栈跟踪被分成两部分。

请注意,我不想要在 execute(Runnable) 中运行任务的执行程序的调用者线程,也就是 this answer和 Guava 的 MoreExecutors.sameThreadExecutor() 做。

最佳答案

java.util.concurrent 中的大多数执行程序的行为完全符合您的预期。当有太多任务时,有些会产生额外的线程,但通常可以将它们配置为设置限制。

要利用这种行为,不要每次都启动新的执行程序 - 使用相同的执行程序。要等待一组任务完成,请使用 invokeAll() , 或 submit()然后 future.get()

关于java - 阻塞线程上有 ExecutorService 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12464330/

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