【问题标题】:Java Executor - Single Thread Multiple TaskJava Executor - 单线程多任务
【发布时间】:2013-08-20 18:43:10
【问题描述】:

Executor 可以在一个线程上运行多个任务吗?

显然,任务执行不能同时发生在只有一个物理内核上运行,但有没有办法等待或让步,以便其他提交的任务可以运行?

如果没有等待,那么通常如何确定另一个任务何时运行?

【问题讨论】:

  • 另一个任务会在它完成之前运行的任务运行,不是吗?
  • 是的,似乎是这样。必须等到按 FIFO 顺序完成。
  • 嗯,这是你应该研究的东西。除非有一个正在处理的底层队列,否则我认为任务 2 完全有可能在任务 1 之前执行。在这种情况下,您知道任务 1 将在任务 2 完成后立即运行。

标签: java executor


【解决方案1】:

是的。

目前的实现不适用。

没有。

;)

考虑 SingleThreadExecutor (http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/Executors.html#newSingleThreadExecutor()) 上的文档和 StackOverflow 上的 Wait between tasks with SingleThreadExecutor

您可以在线程之间实现自己的线程共享锁,并在多线程执行程序上运行它们...但是如果您希望其他人的实现这样做,那么,据我所知,您已经出局了运气。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-01
    • 2017-08-28
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多