threadDefaultFactory中的AtomicInteger

时间:2016-10-12 08:59:50

标签: java multithreading

为什么 DefaultThreadFactory

中有 AtomicInteger
private static final AtomicInteger poolNumber = new AtomicInteger(1);

仅仅因为它增加并存储价值或其他一些原因?

2 个答案:

答案 0 :(得分:1)

因为它可以原子递增。

增加AtomicInteger包含三个操作:

  1. 读出当前值
  2. 增加该值
  3. 存储递增的值
  4. 这三个动作作为一个原子操作执行。

    这意味着另一个线程将无法进行干预,例如在步骤1和2之间或在步骤2和3之间并且破坏计数。这种行为使得AtomicInteger可以安全地用于多线程环境。

答案 1 :(得分:0)

该静态值在DefaultThreadFactory的构造函数中递增。用户可以在不同的线程中创建工厂实例,并且可能会丢失增量,因此AtomicInteger使这种方法成为线程安全的。