java - Java有可索引的多队列线程池吗?

标签 java multithreading queue threadpool

是否有这样的 Java 类:

  1. 可以通过id添加可执行任务,保证所有具有相同id的任务永远不会同时运行
  2. 可以将线程数限制在固定数量

简单的 Map 解决方案很容易解决 (1),但很难管理 (2)。同样,我所知道的所有线程池类都将从单个队列中提取,这意味着 (1) 不能保证。

欢迎使用涉及外部库的解决方案。

最佳答案

对于每个 id,你需要一个 SerialExecutor,在 java.util.concurrent.Executor 的文档中有描述。 .所有串行执行器将工作委托(delegate)给 ThreadPoolExecutor具有给定的 corePoolSize。

可以在 my code samples 找到 SerialExecutor 的优化版本.

关于java - Java有可索引的多队列线程池吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17972884/

相关文章:

java - 用不同大小的 bitset 替换所有内部 bitset

java - Java中无符号右移负数

c - 使用信号量同步来自不同进程的线程

java - Jdbc DataSource多线程不释放连接

sql-server - 如何使用 ORDER BY 更新 TOP(n) 给出可预测的结果?

c# - 可观察的堆栈和队列

java - Spring Boot 批处理调度程序运行一次

java - 如何根据主键的值更改外键?

java - ThreadPoolExecutor 创建重复线程

java - ActiveMQ 抛出不匹配的确认异常