3

我会描述我的问题:

  • 我正在异步模式下开发用于文档生成(Office 文档)的应用程序,因此我使用 Threads

  • 由于性能限制,我只能同时启动 2 个线程,

  • 为了不阻止用户在两个线程运行时启动文档生成,我想开发一个包含 ArrayDeque 对象作为线程堆栈的主线程,用户可以在其中添加创建请求(作为实现 Collable 或 Runnable 接口的对象)并使用 Concurrent API在 FIFO 模式下启动线程

    问题是:

  • 如何确保将主线程作为所有用户的单例运行?

  • 如何在主运行线程上调用 ArrayDeque

4

1 回答 1

9

听起来像是一个使用ExecutorService两个线程池的简单案例:

class Task implements Runnable {
    ...
}

ExecutorService exec = Executors.newFixedThreadPool(2);
exec.submit(new Task()); // submit task to the queue for asynchronous processing

ExecutorService封装一个线程池和一个工作队列。Thread 将在完成以前的任务时自动选择新的工作。

于 2013-01-08T14:06:27.600 回答