Применяет ли ThreadPoolExecutor шаблон шаблона? - PullRequest
0 голосов
/ 04 июня 2018

Существует 2 метода подключения в ThreadPoolExecutor .

Эта техника заставляет меня задуматься о шаблонном шаблоне pattern, где в классе abstract есть методы ловушек .Однако методы hook в abstract классе шаблонном методе отличаются от ThreadPoolExecutor тем, что:

  • ThreadPoolExecutor класс бетон , тогда как класс, определяющий методы крюка в шаблонном методе шаблон abstract
  • Методы подключения , такие как beforeExecute(Thread t, Runnable r) и afterExecute(Runnable r, Throwable t), в ThreadPoolExecutor: Бетон с пустым Тело метода , тогда как Методы подключения in abstract класс шаблонный метод шаблон abstract, хотя оба метода хука protected указывают, что они должны быть overridden в их подклассах

Итак, мои ВОПРОСЫ :

  • относится ли ThreadPoolExecutor к шаблонному методу pattern на всех?
  • Является ли метод hook per se.независимый метод из шаблонный метод шаблон ?

1 Ответ

0 голосов
/ 04 июня 2018

Лично я бы сказал да , потому что ThreadPoolExecutor предопределяет набор команд, которые не могут быть изменены при создании подклассов, так как он помечен как final.Смотри #runWorker.Это шаблон: первый beforeExecute, второй task.run, третий afterExecute.

final void runWorker(Worker w) {
  // ... snip
     beforeExecute(wt, task);
     try {
           task.run();
     } 
     ...
     } finally {
        afterExecute(task, thrown);
     }

   // ... snip
} 

Он оставляет некоторые части реализации подклассу beforeExecute, afterExecute.

Но да, я знаю, что может быть обсуждение, так как в этом случае у класса есть только хуки (не помеченные как абстрактные, поэтому разрешенные, но не обязательные) для управления подклассами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...