为什么 DefaultThreadFactory
中有 AtomicIntegerprivate static final AtomicInteger poolNumber = new AtomicInteger(1);
仅仅因为它增加并存储价值或其他一些原因?
答案 0 :(得分:1)
因为它可以原子递增。
增加AtomicInteger
包含三个操作:
这三个动作作为一个原子操作执行。
这意味着另一个线程将无法进行干预,例如在步骤1和2之间或在步骤2和3之间并且破坏计数。这种行为使得AtomicInteger
可以安全地用于多线程环境。
答案 1 :(得分:0)
该静态值在DefaultThreadFactory的构造函数中递增。用户可以在不同的线程中创建工厂实例,并且可能会丢失增量,因此AtomicInteger使这种方法成为线程安全的。