是否有ExecutorService
允许现有线程执行执行而不是产生新线程?如果它是 ScheduledExecutor,则奖励。大多数执行程序会产生工作线程来执行,但我希望工作线程成为我所在的现有线程。这是我想象的API:
while (!executor.isTerminated()) {
Runnable r = executor.take();
r.run();
}
这类似于 SWT 和 JavaFX 允许主线程分派事件的方式,与 Swing 不同,后者需要产生自己的事件分派线程来处理事件。
动机:我目前有很多地方线程产生一个新的执行程序,然后调用 awaitTermination() 等待它完成。我想节省一些资源并防止堆栈跟踪被一分为二。
请注意,我不想要在execute(Runnable)
的调用者线程中运行任务的执行程序,这就是这个答案和 GuavaMoreExecutors.sameThreadExecutor()
所做的。