- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
上下文:我正在使用 netty 并定义了一个处理程序,以便对传入/传出流量进行计数和分类。为此,我使用了如下所示的 enumMap:
EnumMap<MyEnum, AtomicLong>
但是现在我意识到只有一个线程在操作值(之前我认为它不止一个,netty 似乎保证每个 channel 一个线程)。这意味着 AtomicLong 不是必需的。 但是,由于 AtomicLong 是原始 long 的包装器,同时 Long 是不可变类型,我有理由认为仅将 AtomicLong 交换为 Long 会降低性能。
对此有什么想法吗?
我可能应该做的是移动到 int 并删除整个 enumMap 东西..
BR塞巴斯蒂安
最佳答案
关于java - AtomicLong 与 Long 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12910981/
我正在创建一个程序来创建斐波那契数列,但它总是搞砸,因为多头不能包含它很长时间。我正在尝试切换到 AtomicLongs,但我无法将atomiclong 添加到atomiclong,只能添加常规lon
我知道可能的竞争条件是读取-修改-写入,例如: public class UnsafeSequence { private int value; public int getNex
所以我在使用 AtomicLong 并决定看一下它的实现,并注意到两种方法之间的以下区别: getAndAdd(long delta): public final long getAndAdd(lon
我正在开发多线程代码,我试图测量特定方法所花费的时间,因为我正在对我们的客户端代码和服务代码进行负载和性能测试,并尝试对我们的大多数队友代码进行基准测试。 因此,对于此性能测量,我使用 - Syste
我不能递减流中的公共(public)长值(流中使用的外部声明值必须是最终值),所以我必须在 java 流中使用 AtomicLong: var users = Stream getUsers(); v
我有一个非常简单的类(class): public class IdProvider { private Map idMap; public IdProvider(){
我需要一个长实例变量。 此变量将保存一些事件时间(以毫秒为单位的时间)。 如果我只是将值设置为这么长并获取值, 使用 AtomicLong(并且只使用它的 get() 和 set())而不是 long
我有一个运行多线程的程序,所有线程共享并处理单个 AtomicLong 变量。他们每个人都会首先调用 getAndAdd() 方法来检索值并进一步处理。 如果所有线程同时运行,调用上述方法是否会导致一
我了解了 Java 的 AtomicInteger 在内部如何与 CAS(比较和交换)操作一起工作。基本上,当多个线程尝试更新值时,JVM 内部会使用底层 CAS 机制并尝试更新值。如果更新失败,则使
我在我的多线程代码中使用 AtomicLong 的 incrementAndGet 方法来测量我们的一些客户端代码的性能。 @Override public void run() { long
我有一张 map 如下 - ConcurrentHashMap histogram = new ConcurrentHashMap(); 这张 map 包含很多键值对。将 AtomicLong 作为值
上下文:我正在使用 netty 并定义了一个处理程序,以便对传入/传出流量进行计数和分类。为此,我使用了如下所示的 enumMap: EnumMap 但是现在我意识到只有一个线程在操作值(之前我认为它
我看到 Java 的 AtomicInteger 在内部如何与 CAS(比较和交换)操作一起工作。基本上当多个线程尝试更新值时,JVM 在内部使用底层 CAS 机制并尝试更新值。如果更新失败,则使用新
有人能解释一下 AtomicLong 的用途吗?例如,下面的语句有什么区别? private Long transactionId; private AtomicLong transactionId;
下面这段代码中的原子整数是否在不同的 REST 调用之间共享?如果它是静态的呢? public class GreetingController { private static final
我正在尝试将一些 Java 代码移植到 Windows C++,但对如何实现 AtomicLong.lazySet() 感到困惑。我能找到的唯一信息是谈论它的作用,而不是如何实现它,可用的源代码最终在
LongAdder 作为 AtomicLong 的替代品 ExecutorService executor = Executors.newFixedThreadPool(2); IntStrea
我需要一个 long 类型的计数器,具有以下要求/事实: 增加计数器的时间应尽可能短。 计数器只会被一个线程写入。 从计数器读取将在另一个线程中完成。 计数器会定期递增(最多每秒几千次),但只会每五秒
我需要一个具有 AtomicLong 值的多键映射。所以类似于 AtomicLongMap 的东西guava 但它支持多个键。所以我的新 map 应该能够像这样: MultiKeyAtomicLong
我希望将 AtomicLong 中的当前 timestamp 与 currentTimeMS 进行比较,以便我知道是否已经过去了一段时间,如果是,则只有一个单线程将进入一个代码块,但据我所知,comp
我是一名优秀的程序员,十分优秀!