java中的事件线程
我想创建一个后台线程来处理一些任务(Runnable),并按照发布的顺序执行它们 重要提示:这些任务不能在事件调度程序线程上执行 比如:java中的事件线程,java,events,multithreading,Java,Events,Multithreading,我想创建一个后台线程来处理一些任务(Runnable),并按照发布的顺序执行它们 重要提示:这些任务不能在事件调度程序线程上执行 比如: BackgroundEventThread backgroundEventThread = new BackgroundEventThread(); 然后,后来,在代码中的许多地方: Runnable thingToDo = new Runnable(){...}; backgroundEventThread.executeThis(thingToDo)
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
应该很容易编写,但我想知道这样一个类是否已经存在于JDK中某个我不知道的地方或某个公共库中
编辑:我事先不知道要在此线程上执行的任务数
我本可以:
- 任务0(非常短)发生在t0
- 任务1(长时间处理…)正在发生 t0+1s时
- 任务2(短)发生在t0+5s等
- 任务3(等,等…)
你可以用一个单一线程的“池”来设置它,然后向它抛出任务来为你执行。应该可以配置一个线程来完成你需要的任务。SwingWorker是否保证执行顺序?这不完全是我想要的:-我不需要与EDT进行任何交互-我的任务很短,其中有很多,可以随时创建。因此,我需要很多swing工作线程,我不能确定所有的swing工作线程都将共享同一个后台线程。它是异步的,因此没有执行顺序(如果我理解正确的话)。如果希望在后台执行两个后续操作,请使用一个swing worker和两个助手类来执行每个顺序任务。此外,我认为您可以通过ThreadPoolExecutor控制异步线程的数量。我发现这与此要求存在矛盾:“重要:这些任务不能在事件调度程序线程上执行。”Carl,你是什么意思?SwingWorker和需求之间的矛盾,或者与需求本身的矛盾?顺便说一句,SwingWorker在内部使用的正是ThreadPoolExecutor。只有它有一个定义最大线程数的常量。