Java 由ADFactoryBuilder生成的线程工厂是线程安全的吗?

Java 由ADFactoryBuilder生成的线程工厂是线程安全的吗?,java,thread-safety,threadpool,guava,Java,Thread Safety,Threadpool,Guava,假设我有以下代码,并且makePool可以被多个线程调用。我正在使用以确保线程具有唯一的名称 private final ThreadFactory threadFactory = new ThreadFactoryBuilder().setNameFormat( "MyBusinessClass-%d").build(); public ExecutorService makePool() { return Executors.newFixed

假设我有以下代码,并且makePool可以被多个线程调用。我正在使用以确保线程具有唯一的名称

private final ThreadFactory threadFactory = new ThreadFactoryBuilder().setNameFormat(
                    "MyBusinessClass-%d").build();

public ExecutorService makePool() {
    return Executors.newFixedThreadPool(1, threadFactory);
}
或者我必须假设池不是线程安全的,并且必须执行以下操作:

private static final AtomicLong poolCount = new AtomicLong(0L);

public ExecutorService makePool() {
    private final ThreadFactory threadFactory = new ThreadFactoryBuilder().setNameFormat(
        "MyBusinessClass- " + poolCount.incrementAndGet() + "-%d").build();
    return Executors.newFixedThreadPool(1, threadFactory);
}
我对(Guava 10.0.1)的理解是,它是线程安全的,只要支持线程工厂是线程安全的。在代码中,支持线程工厂将是线程安全的
Executors.DefaultThreadFactory
的实例


请注意,这些都没有指定。。。就我所知。。然而,这些类的编码方式告诉我,它们在设计上是线程安全的。各个对象的可变组件由实现为原子的计数器组成,线程创建/启动之前有一个过程。

如果我提供名称格式,我认为我没有使用默认的线程工厂。请检查源代码。我想你正在使用它。唯一不使用默认线程工厂的情况是在
ThreadFactoryBuilder
对象上调用
setThreadFactory
。我查找了源代码。他们使用原子长作为计数,并在返回的匿名线程工厂中使用原子长,因此是线程安全的。请将此引用添加到您的答案:@Joseph-我的答案已链接到源代码。看到短语“源代码”上的超链接了吗?我看到了。Add可能是个错误的词。我的意思是替换。我的链接直接指向.build()方法。