【问题标题】:Passing a ThreadFactory to the ScheduledThreadPoolExecutor将 ThreadFactory 传递给 ScheduledThreadPoolExecutor
【发布时间】:2012-08-06 05:50:26
【问题描述】:

ScheduledThreadPoolExecutor 的构造函数之一允许我将 ThreadFactory 传递给它。

这有点奇怪,因为我已经在处理线程池了!这意味着它知道如何管理线程生命周期。

从我的角度来看,这看起来像是一种策略模式,允许我覆盖线程创建的逻辑,同时维护它提供的调度服务。

  1. 我猜对了吗?
  2. Java 中内置的 ThreadFactories 有哪些?

谢谢!

【问题讨论】:

  • 你可以用它,给线程起有意义的名字,让线程成为守护进程,改变线程的优先级,改变默认的类加载器,使用你自己的线程子类

标签: java multithreading threadpool scheduling


【解决方案1】:

ThreadFactory 通常用作工厂模式来详细说明创建线程的方式。

一个典型的用例是逻辑地命名你的线程。

public WorkerThreadFactory implements ThreadFactory {
   private int counter = 0;

   public Thread newThread(Runnable r) {
     return new Thread(r, "Worker" + "-" + count++);
   }
}

This 是一个非常详尽的用例列表。

ThreadFactory 的内置实现是Executors.defaultThreadFactory()

These 是它被使用的地方。

【讨论】:

    【解决方案2】:

    使用自定义线程工厂始终是一个好习惯。默认工厂用处不大。您应该使用自定义工厂,原因如下:

    1. 拥有自定义线程名称
    2. 在线程类型之间进行选择
    3. 选择线程优先级
    4. 处理未捕获的异常

    查看此帖子:http://wilddiary.com/understanding-java-threadfactory-creating-custom-thread-factories/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 2014-09-28
      • 2019-12-21
      • 2017-01-25
      • 2014-03-09
      • 2021-06-01
      相关资源
      最近更新 更多