在 Java 中,ExecutorService 本身并不直接“持有”队列,而是由其底层使用的 阻塞队列(BlockingQueue) 来决定任务如何排队。通常我们说的是 ThreadPoolExecutor 支持的队列类型(ExecutorService 的常见实现)。
ThreadPoolExecutor 构造方法中的 workQueue 参数可以是以下任意一种 BlockingQueue:
SynchronousQueue
new ThreadPoolExecutor(
2, 4, 0L, TimeUnit.SECONDS,
new SynchronousQueue<>()
);
newCachedThreadPool✅ 特点:
ArrayBlockingQueue
new ArrayBlockingQueue<>(100)
✅ 特点:
LinkedBlockingQueue(默认无界)
new LinkedBlockingQueue<>(); // 默认 Integer.MAX_VALUE
✅ 常用于:
newFixedThreadPoolnewSingleThreadExecutor⚠ 风险:
PriorityBlockingQueue
new PriorityBlockingQueue<>()
Comparable 或提供 Comparator✅ 特点:
DelayQueue / DelayedWorkQueue
new DelayedWorkQueue(); // ScheduledThreadPoolExecutor 内部使用
ScheduledThreadPoolExecutor| 工厂方法 | 使用的队列 |
|---|---|
newFixedThreadPool |
LinkedBlockingQueue(无界) |
newSingleThreadExecutor |
LinkedBlockingQueue(无界) |
newCachedThreadPool |
SynchronousQueue |
newScheduledThreadPool |
DelayedWorkQueue |
SynchronousQueueArrayBlockingQueueScheduledThreadPoolExecutor如果你有具体使用场景(如高并发、IO 密集、任务优先级),我可以帮你推荐具体线程池 + 队列组合。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。