我想以序列化方式运行一些任务。对此的典型解决方案是创建一个Java:另一个多线程执行程序中的单线程子执行程序
Executor executor = Executors.newSingleThreadedExecutor();
并运行此任务上的任务。
但是,我已经有了一个多线程的线程池。
有没有一种简单的方法来派生一个行为像单线程的子执行器(如:一次只运行一个任务),但是使用另一个(可能是非单线程)执行器作为“后端”而不是创建一个全新的操作系统线程?
有几个用例为什么我们会想这样做:
- 的应用程序可能已经有了例如线程池后台任务, 设置优先级等,我们希望重用。
- 类似地,我们可能会传递一个执行程序,它不只是一个普通的线程池(例如推迟执行购买,测量执行时间等)
- 其中在MoreExecutors.directExecutor)使(为一个子集测试(以便例如期货立即解决)。
编辑:加入上面的例子
你可以把你想要在单线程中运行的任务代码?我认为在单线程中运行任务将由任务本身决定。如果您不想在另一个线程的任务内执行任何操作,它只会在同一个线程中运行。 –
我同意Vijendra - 你的问题很有趣,但为了给予更多有用的反馈,一些代码可能会帮助我们。 – GhostCat