大家好,我想创建一个作业队列来执行多个任务.但是,我的要求是我应该能够随时将任务添加到该作业队列中,并且所有这些任务应按顺序执行.我在互联网上搜索了一些解决方案,并找到了这两个链接1) Java线程池执行程序示例 2) 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动态地向其中添加任务
发布评论