我会描述我的问题:
我正在开发异步模式下的文档生成(Office文档)应用程序,所以我使用Threads
由于性能限制,我必须同时启动2个线程,
为了不阻止用户在两个线程运行时启动文档生成,我想开发一个包含ArrayDeque对象的主线程作为线程堆栈,用户可以在其中添加创建请求(作为实现Collable或Runnable接口的对象) )并使用Concurrent API在FIFO模式下启动线程
问题是:
如何确保将主线程作为所有用户的单例运行?
如何在主要运行线程上调用ArrayDeque
答案 0 :(得分:9)
听起来像使用带有两个线程池的ExecutorService
的简单情况:
class Task implements Runnable {
...
}
ExecutorService exec = Executors.newFixedThreadPool(2);
exec.submit(new Task()); // submit task to the queue for asynchronous processing
ExecutorService
将封装一个线程池和一个工作队列。线程将在完成先前任务时自动获取新工作。