Я думаю, что вы можете достичь этой функциональности, используя PriorityQeueue
(или PriorityBlockingQueue
в зависимости от ваших потребностей).
Эти очереди обрабатывают задачи в порядке, который зависит от Comparator.Хотя этот компаратор передается в очередь при его создании, вы можете реализовать свой собственный компаратор, который имеет свою собственную логику, которая может определять, является ли конкретная задача более низкой или более высокой приоритетностью.