Можно ли использовать ScheduledThreadPool для принятия потоков другого типа?

1

Работа над проблемой, когда у меня есть 3 счетчика наличных денег, обслуживающих количество клиентов. Каждый счетчик занимает 1 сек для обработки 1 предмета отдельно от третьего счетчика, который занимает 2 секунды для обработки каждого элемента. (например, клиент A с 5 пунктами на счетчике один займет 5 секунд), клиент B с 3 пунктами на счетчике C займет 6 секунд. Каждый клиент имеет разное время присоединения к очереди. Я использовал ScheduledExecutorService для создания количества потоков, эквивалентных счетчикам денег.

ScheduledExecutorService scheduledExecutorService =Executors.newScheduledThreadPool(3);

Теперь моя runnable реализация проверяет количество элементов и циклов запуска соответственно.

Я задаю количество задач в зависимости от количества клиентов.

scheduledExecutorService.schedule(new Runnable(),Timetojoin, TimeUnit.SECONDS);

Как назначить разные приоритеты для трех потоков, созданных службой-исполнителем. Поскольку мой последний счетчик (поток) занимает 2 секунды для обработки каждого элемента.

Теги:
multithreading
executorservice
scheduledexecutorservice

1 ответ

0

Вам необходимо будет предоставить пользовательский ThreadFactory в ExecutorService. Ваш ThreadFactory позволит вам создавать новые темы, которые будут соответствовать вашим потребностям.

ScheduledThreadPoolExecutor(int corePoolSize, ThreadFactory threadFactory)

Больше информации здесь, в документе.

  • 0
    Спасибо за упоминание этого, но все потоки, созданные через ThreadFactory, будут схожего типа. Возможно ли иметь различное поведение только для одного потока, а другие имеют общее поведение?
  • 0
    Фабрика потоков создает новые темы. Параметры таких потоков зависят от реализации такой фабрики. Фабрика не должна производить одинаковые нити вообще.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню