代码之家  ›  专栏  ›  技术社区  ›  Rui

threadpoolexecutor是否应用模板模式?

  •  0
  • Rui  · 技术社区  · 6 年前

    有2个 钩子法 ThreadPoolExecutor .

    这个 技术 让我想起 模板法 模式,哪里有 钩子法 abstract 上课。然而, 钩子法 摘要 类别 模板法 与…不同 ThreadPoolExecutor 其中:

    • 线程池 班级是 混凝土 ,而定义 钩子法 模板法 模式是 摘要
    • 钩子法 ,例如 beforeExecute(Thread t, Runnable r) afterExecute(Runnable r, Throwable t) 线程池 混凝土 空的 方法体 ,鉴于 钩子法 在里面 摘要 类别 模板法 图案是 摘要 尽管事实上 钩子法 protected 表明他们应该 overridden 在他们的 子类

    所以我的 问题 是:

    • 是不是 线程池 属于 模板法 图案 完全?
    • 钩子法 就其本身而言。独立的 技术 模板法 图案 ?
    1 回复  |  直到 6 年前
        1
  •  0
  •   Nico Van Belle    6 年前

    我个人认为 ,因为threadpoolexecutor预先定义了一组命令,当将其标记为 final . 见 #runWorker . 这是模板:首先 beforeExecute ,秒 task.run ,第三个 afterExecute .

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

    它将实现的某些部分留给子类, 执行前 , 后执行

    但是是的,我知道可能会有一些讨论,因为在本例中,类只有钩子(没有标记为抽象,因此允许,但不是要求)来控制子类。

    推荐文章