摘要:
在并发环境下,我们经常使用的集合类(List、Map、Set)其实都是不安全的。 集合不安全问题之List List在单线程的情况下是安全的,但是多线程的情况下是不安全的,我们来看两段代码: 单线程 public class UnsafeList1 { public static void main 阅读全文
摘要:
ABA问题的产生 CAS会导致“ABA问题”。 CAS算法实现一个重要前提需要取出内存中某时刻的数据并在当下时刻比较并替换,那么在这个时间差类会导致数据的变化。 比如说一个线程1从内存位置V中取出A,这时候另一个线程2也从内存中取出A,并且线程2进行了一些操作将值变成了B,然后线程2又将V位置的数据 阅读全文
摘要:
讲解线路: CAS-->UnSafe-->CAS底层思想-->ABA-->原子引用更新-->如何规避ABA问题 CAS是什么 CAS的全称为Compare-And-Swap,即比较并交换,它是一条CPU并发原语。它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的。 C 阅读全文
摘要:
JUC简介 利用多线程提高效率,尽可能的利用cpu资源。java5以前多线程同步用了sychronized、volatile。在 Java 5.0 提供了 java.util.concurrent(简称JUC)包,在此包中增加了在并发编程中很常用的工具类,用于定义类似于线程的自定义子系统,包括线程池 阅读全文