创建一个作业队列或任务控制器,并用Java动态地向其中添加任务 [英] Create a Job Queue or Task Controller and dynamically add task to it in Java
问题描述
大家好,我想创建一个作业队列来执行多个任务.但是,我的要求是我应该能够随时将任务添加到该作业队列中,并且所有这些任务应按顺序执行.我在互联网上搜索了一些解决方案,并找到了这两个链接1) Java Executor框架教程和最佳做法.但是我不能同时使用这两种解决方案.因为启动Executor服务后,我无法向该服务添加新任务.因为我们知道它可能会抛出InterruptedException或ConcurrentModificationException.
Hi all I want to create a job queue to execute multiple task.but,my requirement is i should be able to add tasks to that job queue any time and all those tasks should be executed sequentially. I searched some solutions in internet and found these two links 1)Java Thread Pool Executor Example 2)Java Executor Framework Tutorial and Best Practices. But i can't use both of these solution.Because after starting Executor service I can't add new task to the service. Because we know that It may throw InterruptedException or ConcurrentModificationException.
推荐答案
您可以使用BlockingQueue
在另一个线程中等待,直到出现一个或多个Runnable
.
You can use a BlockingQueue
to keep waiting in a separate thread until one or more Runnable
show up.
public class Mainer {
private static final BlockingQueue<Runnable> queue = new ArrayBlockingQueue<>(15);
public static void main(String[] args) {
Thread t = new Thread(() -> {
while (true) {
try {
queue.take().run();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
t.start();
for (int i = 0; i < 10; i++) {
queue.add(() -> {
System.out.println("Hello");
});
}
}
}
这篇关于创建一个作业队列或任务控制器,并用Java动态地向其中添加任务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!