记录 ThreadPoolExecutor的一些细节

任务队列放入任务的执行方法

众所周知,ThreadPoolExecutor内部任务队列属性类型定义为:private final BlockingQueue workQueue; 而其有三种提交任务方式:add、put和offer,好奇其内部用的哪个,又不想查资料,故而跳到源码内部一看。结果如下:

三种提交任务方式:

  • put(E element):将指定元素插入队列,如果队列已满,则阻塞当前线程,直到有空间可用。
  • add(E element):将指定元素插入队列,如果队列已满,则抛出异常。
  • offer(E element):将指定元素插入队列,如果队列已满,则返回 false。

execute方法和beforeExecute方法的执行顺序

若只看方法名,或许会以为beforeExecute会在execute方法执行前执行,事实并非如此,实际上,execute 方法是线程池对外提供的主要方法,用于提交任务到线程池中执行,而beforeExecute 方法则是在任务真正被执行之前由线程池调用的回调方法。
beforeExecute调用的位置:

posted @   li-羡鱼  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示