Главный поток java управляет запуском других потоков

Я бы описал мою проблему:

  • Я разрабатываю приложение для создания документов (документы Office) в асинхронном режиме, поэтому я использую потоки

  • из-за ограничений производительности я должен запускать только 2 потока одновременно,

  • Чтобы не блокировать пользователя на запуск генерации документов во время работы двух потоков, я подумал о разработке основного потока, содержащего объект ArrayDeque в качестве стека потоков, где пользователь может добавить запрос на создание (как объект, реализующий интерфейс Collable или Runnable) и использовать API-интерфейс Concurrent для запуск темы в режиме FIFO

    Вопросы:

  • Как можно обеспечить запуск основного потока в качестве единого для всех пользователей?

  • Как я могу вызвать ArrayDeque в главном рабочем потоке

1 ответ

Похоже, простой случай использования ExecutorService с пулом из двух потоков:

class Task implements Runnable {
    ...
}

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

ExecutorService будет инкапсулировать пул потоков и рабочую очередь. Поток автоматически подберет новую работу, когда завершит предыдущие задачи.

Другие вопросы по тегам