2011-07-14 1 views
1

À partir de la page de documentation: Remarque: Pour imbriquer correctement plusieurs remplacements, les sous-classes doivent généralement appeler super.afterExecute au début de cette méthode.java- clarification nécessaire sur la méthode before/afterExecute dans ThreadPoolExecutor

Si j'avais une chaîne de sous-classes de ThreadPoolExecutor, chacune avec un remplacement afterExecute, mettre super.afterExecute fera en sorte que chaque remplacement afterExecute dans sa sous-classe respective sera exécuté? Puisque la méthode afterExecute d'origine dans ThreadPoolExecutor est vide, placer super.afterExecute dans la première sous-classe ne fait rien d'utile?

Répondre

2

Peut-être, mais il y a des situations où vous pourriez causer de problèmes si vous n'appelez pas super.afterExecute(), parce que votre code fonctionnera toujours, mais l'Exécuteur peut ne pas fonctionner correctement si:

  • change quelqu'un (autre) le type de exécuteur à celui qui ne ont le code
  • une version ultérieure de la machine virtuelle Java modifie la mise en œuvre et le code introduit

Ne pas être complet est comme un Ticki Une bombe à retardement qui peut exploser un jour, et il sera beaucoup plus difficile de trouver le bogue plus tard.

Questions connexes