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

如果我有一连串的ThreadPoolExecutor子类,每个子类都有一个afterExecute重写,那么将super.afterExecute放在后面可以确保每个afterExecute重写在其各自的子类中运行?

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

最佳答案

也许可以,但是在某些情况下,如果不调用super.afterExecute()可能会导致问题,因为代码仍然可以运行,但是在以下情况下,执行器可能无法正常运行:


某人(其他)将执行程序的类型更改为具有代码的执行程序
JVM的更高版本更改了实现并引入了代码


不够彻底就像是定时炸弹,可能会在一天后爆炸,以后很难再发现该错误了。

07-24 20:55