TheadFactoryBuilder线程生成的ThreadFactory安全吗?

Is the ThreadFactory generated by TheadFactoryBuilder thread safe?

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

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);
}

我对 source code (Guava 10.0.1) 的解读是它是线程安全的,只要后备线程工厂是线程安全的。在您的代码中,支持线程工厂将是线程安全的 Executors.DefaultThreadFactory 的实例。

请注意,none 是 指定的 ... 据我所知。但是,这些 类 的编码方式对我说它们是线程安全的设计。各个对象的可变组件由作为原子实现的计数器组成,线程创建/启动具有 happens-before.