有人可以简要说明如何和何时使用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
来完成此任务。