记录 ThreadPoolExecutor的一些细节
任务队列放入任务的执行方法
众所周知,ThreadPoolExecutor内部任务队列属性类型定义为:private final BlockingQueue
三种提交任务方式:
- put(E element):将指定元素插入队列,如果队列已满,则阻塞当前线程,直到有空间可用。
- add(E element):将指定元素插入队列,如果队列已满,则抛出异常。
- offer(E element):将指定元素插入队列,如果队列已满,则返回 false。
其execute方法和beforeExecute方法的执行顺序
若只看方法名,或许会以为beforeExecute会在execute方法执行前执行,事实并非如此,实际上,execute 方法是线程池对外提供的主要方法,用于提交任务到线程池中执行,而beforeExecute 方法则是在任务真正被执行之前由线程池调用的回调方法。
beforeExecute调用的位置: