java 线程安全的int_int变量操作与线程安全

今天人人的笔试题目中有一个int i=0;i=i++;是否是线程安全的?如果不是说出在JVM中的执行步骤,以及使用JDK的什么类能够使线程安全些? JDk中的类是AtomicInteger,我答个Integer,哎,悲剧。

AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。 来看AtomicInteger提供的接口。

Java代码  0537ef6570df578a01af5594812f8626.png

//获取当前的值

public final int get()

//取当前的值,并设置新的值

public final int getAndSet(int newValue)

//获取当前的值,并自增

public final int getAndIncrement()

//获取当前的值,并自减

public final int getAndDecrement()

//获取当前的值,并加上预期的值

public final int getAndAdd(int delta)

... ...

我们在上一节提到的CAS主要是这两个方法

public final boole

你可能感兴趣的:(java,线程安全的int)