Rik*_*ing 10 java multithreading atomic
所以我看到有人试图ThreadLocal<AtomicInteger>在某些Java代码中使用 a .
现在,对于链接代码,这显然是无用的,以及导致请求被拒绝的其他问题.
而且它似乎永远是无用的:( AtomicInteger来自java.util.concurrent.atomic包)是为多线程访问而设计的,并且ThreadLocal使每个线程都有自己的值,所以为什么要使用呢?
我的问题是:是否存在任何ThreadLocal<AtomicInteger>有用的情况?
是的,我们可能会提出一个合理的方案:
AtomicInteger在每个任务开始时使用一个线程局部实例;如果不评估出现这种情况的总体情况,我们无法判断.
假设我们每个线程需要一个整数计数器。ThreadLocal 只能处理对象,所以逻辑上我们需要使用 int 包装器 - Integer
ThreadLocal<Integer> count = new ThreadLocal<>();
...
count.set(count.get() + 1);
Run Code Online (Sandbox Code Playgroud)
我们可以交替使用 AtomicInteger,不是因为它是线程安全的,而是因为它是可变的
ThreadLocal<AtomicInteger> count = new ThreadLocal<>();
...
count.get().incrementAndGet();
Run Code Online (Sandbox Code Playgroud)
版本 2 的性能比版本 1 好得多,这是一个真正的性能杀手
| 归档时间: |
|
| 查看次数: |
2071 次 |
| 最近记录: |