AtomicLong
- AtomicLong是一个对象,因此我们创建的时候需要的内存大小(对象的大小+对象的引用);
- AtomicLongFieldUpdater
AtomicLongFieldUpdater需要的内存大小为(引用的大小+一个long对象的大小);
结论
大概有以下两种字段适合用Atomic*FieldUpdater:
- 大多数用到这个字段的代码是在读取字段的值, 但仍然有通过CAS更新字段值的需求.
这个时候用AtomicInteger的话每个直接读取这个字段的地方都要多一次.get()调用, 用volatile又满足不了需求,
所以就用到了AtomicIntegerFieldUpdater - 这个字段所属的类会被创建大量的实例对象, 如果用AtomicInteger, 每个实例里面都要创建AtomicInteger对象,
从而多出内存消耗. 比如一个链表类的Node, 用AtomicReference保存next显然是不合适的.
- 在大量需要大量的long实例,并且需要需要进行对应的原子操作的时候,AtomicLongFieldUpdater节省内存。一个AtomicLongUpdater相对于AtomicLong节省16个字节。
本文标题:Java中JUCAtomicLongFieldUpdater VSAtomicLong
本文链接:https://blog.quwenai.cn/post/7252.html
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。






还没有评论,来说两句吧...