У меня есть один производитель задач и несколько аппаратных ресурсов для их выполнения.
Итак, я пытаюсь создать исполнителей с общей очередью
BlockingQueue<Runnable> queue;
ExecutorService executor1 = new ThreadPoolExecutor(poolSize1, poolSize1, 0L, TimeUnit.MILLISECONDS, queue, threadFactory);
ExecutorService executor2 = new ThreadPoolExecutor(poolSize2, poolSize2, 0L, TimeUnit.MILLISECONDS, queue, threadFactory);
ExecutorService executor3 = new ThreadPoolExecutor(poolSize3, poolSize3, 0L, TimeUnit.MILLISECONDS, queue, threadFactory);
и (просто попробуйте) добавить задачу в queue.put (задача) вместо конкретной executorN.execute (задача)
Но execurer не создает поток, пока execute (task) call.
Итак, мне нужна реализация Executor? который запускает задачу на любом свободном потоке суб-исполнителя.
Может быть, вы знаете решение / библиотеку, которую можно использовать?
Это не балансировщик. Мне все равно, где задача начнется. Пусть он будет стоять в очереди, пока его не обработает свободный обработчик