Работа над проблемой, когда у меня есть 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 секунды для обработки каждого элемента.
Вам необходимо будет предоставить пользовательский ThreadFactory
в ExecutorService
. Ваш ThreadFactory
позволит вам создавать новые темы, которые будут соответствовать вашим потребностям.
ScheduledThreadPoolExecutor(int corePoolSize, ThreadFactory threadFactory)
Больше информации здесь, в документе.