在ThreadPoolExecutor中的before / afterExecute方法需要java-澄清

时间:2011-07-14 00:39:03

标签: java multithreading

从文档页面: 注意:要正确嵌套多个重叠,子类通常应在此方法的开头调用super.afterExecute。

如果我有一个ThreadPoolExecutor的子类链,每个子类都有一个afterExecute覆盖,那么放入super.afterExecute将确保其各自子类中的每个af​​terExecute覆盖都会运行?

由于ThreadPoolExecutor中的原始afterExecute方法为空,将super.afterExecute放在第一个子类中没有做任何有用的事情?

1 个答案:

答案 0 :(得分:2)

也许,但是如果你不调用super.afterExecute(),有些情况下你可能会遇到问题,因为你的代码仍会运行,但是如果执行者可能无法正常运行:

  • 某人(else)将执行者的类型更改为 具有代码
  • 的类型
  • 更高版本的JVM会更改实现并引入代码

不彻底就像一颗可能会爆炸的定时炸弹,有一天会发现很多很难找到这个bug。