代码之家  ›  专栏  ›  技术社区  ›  Laurent K

java中的事件线程

  •  4
  • Laurent K  · 技术社区  · 14 年前

    我想创建一个后台线程来处理一些任务(Runnable),并按照发布的顺序执行它们。

    重要提示:这些任务不能在事件调度程序线程上执行。

    BackgroundEventThread backgroundEventThread  = new BackgroundEventThread();
    

    然后,后来,在代码中的许多地方:

    Runnable thingToDo = new Runnable(){...};
    
    backgroundEventThread.executeThis(thingToDo);
    //the things to do will be executed in the order in which they are posted.
    

    BackgroundEventThread

    编辑 :我事先不知道要在此线程上执行的任务数。

    我本可以:

    • 任务0(非常短)发生在t0
    • t0+1s时
    • 任务3(等,等…)

    我需要在task1之后执行task2(我事先不知道),我希望所有这些任务都能尽快执行。

    与EDT上发布的任务完全相同,但不在EDT上。

    3 回复  |  直到 14 年前
        1
  •  4
  •   Carl Smotricz    14 年前

    听起来像是一份工作 java.util.concurrent.ThreadPoolExecutor

    您可以使用单个线程的“池”进行设置,然后向其抛出任务以供您执行。

        2
  •  2
  •   Bozho Michał Mech    14 年前

    检查 SwingWorker

    在专用线程中执行冗长GUI交互任务的抽象类。

    关于如何使用它的所有必要细节都在javadoc中。

        3
  •  2
  •   Bombe    14 年前

    应该可以配置 ExecutorService 做你需要的事。