摘要:
概述 ArrayList 是线程不安全的集合类,当多线程环境下,并发对同一个ArrayList执行add,可能会抛出java.util.ConcurrentModificationException的异常 例子 这边有个简单的程序,创建30个线程,分别对ArrayList执行add操作 public 阅读全文
摘要:
概述 CAS是Compare And Swap的简称,即:比较并交换Java中常见的是Atomic相关类使用了CAS,例如:AtomicInteger、AtomicBoolean等等实现CAS的底层用的是Unsafe操作类 先看个小例子 public static void main(String[ 阅读全文
摘要:
前言 Atomic家族主要是保证多线程环境下的原子性,相比synchronized而言更加轻量级。比较常用的是AtomicInteger,作用是对Integer类型操作的封装,而AtomicReference作用是对普通对象的封装。 对AtomicInteger原子性不了解的,可以看这篇:volat 阅读全文
摘要:
前言 有一天在看Unsafe.getUnsafe()源码时,发现该方法上有一个@CallerSensitive注解。类似的,在Class.forName方法也有该注解。它们的源码分别如下: @CallerSensitive public static Unsafe getUnsafe() { Cla 阅读全文