我有一个Runnables队列来执行我想要使用线程池进行处理。但是,队列中的一些任务彼此相关(可以通过Runnable上的公共hashcode()实现),并且不能同时处理,因此,当从队列中取出任务时,我想检查没有当前正在执行的任务是相关的,如果是,则保留新任务,直到相关任务完成,但允许其他不相关的任务继续(保持高吞吐量很重要)
我可以通过定制的ThreadPoolExecutorService和BlockingQueue来执行此操作,它跟踪正在进行的任务的哈希码,但这有点复杂且难以处理。
是否有人知道这个问题的优雅解决方案?