当前位置: 首页 > 面试题库 >

Java中的AtomicLong有什么作用?

宗建章
2023-03-14
问题内容

可以解释一下AtomicLong的用途吗?例如,以下语句有什么区别?

private Long transactionId;
private AtomicLong transactionId;

问题答案:

这两个对象之间存在 显着 差异,尽管最终结果是相同的,但它们绝对是非常不同的,并且在非常不同的情况下使用。

在以下情况下使用基本Long对象:

  • 您需要包装器类
  • 您正在使用收藏夹
  • 您只想处理对象,而不要处理基元(可以解决问题)

您使用以下AtomicLong情况:

  • 您必须保证该值可以在并发环境中使用
  • 您不需要包装器类(因为此类不会自动装箱)

Long本身不允许线程互操作,因为两个线程可以看到并更新相同的值,但是使用AtomicLong,可以很好地保证多个线程可以看到的值。

实际上,除非您费心使用线程,否则无需使用AtomicLong



 类似资料:
  • 本文向大家介绍Java中的LongAdder和AtomicLong有什么区别?相关面试题,主要包含被问及Java中的LongAdder和AtomicLong有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 JDK1.8引入了LongAdder类。CAS机制就是,在一个死循环内,不断尝试修改目标值,直到修改成功。如果竞争不激烈,那么修改成功的概率就很高,否则,修改失败的的概率就很高,在大量修改

  • java.util.concurrent.atomic.AtomicLong类提供对底层long值的操作,可以原子方式读取和写入,还包含高级原子操作。 AtomicLong支持底层长变量的原子操作。 它具有get和set方法,类似于对volatile变量的读写操作。 也就是说,集合与同一变量上的任何后续获取具有先发生关系。 原子compareAndSet方法也具有这些内存一致性功能。 Atomic

  • (1)用来修饰一个引用  如果引用为基本数据类型,则该引用为常量,该值无法修改;  如果引用为引用数据类型,比如对象、数组,则该对象、数组本身可以修改,但指向该对象或数组的地址的引用不能修改。  如果引用时类的成员变量,则必须当场赋值,否则编译会报错。 (2)用来修饰一个方法 当使用final修饰方法时,这个方法将成为最终方法,无法被子类重写。但是,该方法仍然可以被继承。 (3)用来修饰类 当用f

  • 本文向大家介绍final 在 Java 中有什么作用?相关面试题,主要包含被问及final 在 Java 中有什么作用?时的应答技巧和注意事项,需要的朋友参考一下 final 修饰的类叫最终类,该类不能被继承。 final 修饰的方法不能被重写。 final 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。

  • 问题内容: 我正在学习JPanel和GridLayout,此代码段将生成带有6个按钮的简单JPanel 我想知道为什么如果我注释掉我的代码将不起作用 问题答案: 打包方法调整框架的大小,以使其所有内容均等于或大于其首选大小。打包的另一种方法是通过调用setSize或setBounds(也设置帧位置)显式建立帧大小。通常,使用pack优于调用setSize,因为pack由框架布局管理器负责框架大小,

  • 问题内容: 我有以下Java代码: 打印时结果为254,但我不知道此代码如何工作。如果&运算符只是按位运算符,那么为什么不生成字节而是取整数? 问题答案: 它设置为将8位放入的最低8位得到的(无符号)值。 诸如此类的必要原因是Java中的一种签名类型。如果你刚刚写过: 那么result最终将得到值ff ff ff fe而不是00 00 00 fe。另一个微妙之处在于,将&定义为仅对int值1进行操