Java线程池 · 排队、扩容与拒绝

手动提交任务与推进时间,看队列如何改变线程数量和拒绝结果。。

先看worker总数是否低于core,再尝试入队;队列放不下才扩到max,最后执行拒绝策略。空闲与忙碌不是核心数量的判断条件。 拒绝由handler决定,不自动无限等待。调用者执行会占用提交者;丢弃和抛异常必须与完成任务分开计数。 核心线程数没有固定标准;CPU密集任务通常从可用CPU核数附近压测,I/O任务需考虑等待比例、数据库/下游限额、队列延迟和内存预算。本例2/4是教学起点,不是生产推荐。

主要特点

  • JDK21 execute教学模型;每tick模拟1秒,时钟显示毫秒;播放速度不改变运行结果。 批量演示捕获每次拒绝异常后继续提交;真实代码若不捕获AbortPolicy异常,当前提交循环会中断。

如何使用Java线程池 · 排队、扩容与拒绝

  1. 当前是就绪画面。开始演示会按当前参数执行一次操作;回放准备过程请从头播放。
  2. 每次操作独立一轮。从头播放重播本轮,当前继续从所选步骤接着播;步骤菜单与时间轴可定位,历史菜单可回看上一轮。
  3. 方向键 ← → 可单步,空格键播放或暂停。

数据与隐私

所有计算都在你的浏览器里完成,不连接任何数据库,也不会把你输入的内容上传到任何地方。

相关工具

  • 计算机原理可视化 - 原「数据结构可视化」。36个可交互场景:数据结构、Java集合与JVM/GC/线程池、MySQL索引/MVCC/执行恢复、TCP/UDP、分布式事务;逐步字幕、慢速播放和面试讲解。

查看像素鸭AI全部在线工具

new ThreadPoolExecutor(2, 4, 3, TimeUnit.SECONDS,
    new ArrayBlockingQueue<>(2),
    new ThreadPoolExecutor.AbortPolicy());

官方实现与参考

正在把工具准备好

马上就好,请稍等一下…