AtomicLong vs Long表现

时间:2012-10-16 08:57:26

标签: java performance atomic

上下文: 我正在使用netty并定义了一个处理程序,以便对传入/传出流量进行计数和分类。为此,我使用了一个如下所示的enumMap:

EnumMap<MyEnum, AtomicLong>

但是现在我已经意识到只有一个线程正在操纵值(以前我认为它不止一个,netty似乎保证每个通道一个线程)。这意味着AtomicLong不是必需的。 然而,由于AtomicLong是原始long的包装器,而Long是一个不可变类型,我有理由认为只需将AtomicLong交换为Long就不会那么高。

有关于此的任何想法吗?

我可能应该做的是移动到int并删除整个enumMap事物..

BR 塞巴斯蒂安

3 个答案:

答案 0 :(得分:3)

假设您只有一个帖子:

AtomicLong可以比使用Long更快,如果它可以避免创建对象。

再次快速使用long[]或者根本不使用像TObjectLongHashMap

这样的集合的对象

答案 1 :(得分:1)

我不能想象那个:

  

以计算和分类传入/传出流量

AtomicLongLong(或long)的转化会对您的表现产生任何影响。

答案 2 :(得分:0)

我们在同一事项上使用LongAdder;)