有人可以简要说明如何和何时使用ThreadFactory吗?带有和不带有ThreadFactory的示例可能对理解这些差异很有帮助。

谢谢!

最佳答案



假设我们有一些用于不同任务的工作线程,并希望它们具有特殊名称(例如出于调试目的)。因此,我们可以实现ThreadFactory:

public class WorkerThreadFactory implements ThreadFactory {
   private int counter = 0;
   private String prefix = "";

   public WorkerThreadFactory(String prefix) {
     this.prefix = prefix;
   }

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

如果您有这样的要求,那么如果没有工厂或 builder 模式,则很难实现。
ThreadFactory是Java API的一部分,因为它也被其他类使用。因此,上面的示例说明了为什么在某些情况下我们应该使用“工厂创建线程”,但是,当然绝对不需要实现java.util.concurrent.ThreadFactory来完成此任务。

07-26 08:45