首先说说,原子Integer的意义,也就是AtomicInteger类,这是JDK1.5之后提供的一个类,相似的还有Atomic**,他的意义是为了实现Integer进行加减的原子性。
当我们执行i++或者++i时,实际上都是在执行两步操作,将i取到“工作内存”,加1,然后写回主内存,在单线程环境下,是安全的,但是多线程环境下,显然是不安全的,AtomicInteger类提供具有原子性修改的Integer类,提供以下方法:
//获取当前的值
public final int get()
//取当前的值,并设置新的值
public final int getAndSet(int newValue)
//获取当前的值,并自增
public final int getAndIncrement()
//获取当前的值,并自减public final int getAndDecrement()
//获取当前的值,并加上预期的值
public final int getAndAdd(int delta)
这样一来,在编写同步代码时,就无需使用synchronized关键字书写同步代码了,有助于更加高效地实现同步代码。
再说说final,在写多线程时,我们常常会使用final来修饰变量,这是为什么呢?
咱们优先说说线程安全的有序性:JVM在处理指令集的时候,为了让处理效率更加的快,往往会对指令集进行重排序,如