JUC
小丸子呢
分享RocketMQ与Kafka的相关知识,共勉
展开
-
JUC之volatile
什么是JUCjuc就是java.util.concurrent(并发)包,rt.jar下面(runtime),一个包为何这么神奇?这个时候就引出了关键字volatile,什么是volatilevolatile是java的一个关键字,百度一下,volatile所具有的三个特性:可见性不具有原子性禁止指令重排可见性可见性:在A线程B线程同时访问变量X=1(存储在主内存)的时候...原创 2019-06-26 22:32:33 · 10566 阅读 · 0 评论 -
JUC之CAS
本文乃个人拙见,如有错误,欢迎指出,不能误导新人上一节讲到了volatile,知道了volatile的三个特性,并且知道了不具备原子性,那么怎么解决这个问题呢?这个时候就引出了JUC下面的java.util.concurrent.atomic(原子)包,在这个包里面我们看到了好多以Atomic开头的类,其中就有AtomicInteger,这个就是来保证原子性的一个类?我们来操作一下。如下...原创 2019-06-29 20:30:02 · 10725 阅读 · 0 评论 -
JUC之Atomic
本文乃个人拙见,如有错误,欢迎指出,不能误导新人上一节讲到了CAS,最后说到了CAS的缺点,如果有很多写操作的话,CAS的性能会降低,这个时候还是使用synchronized比较合适。但是CAS还存在一个问题就是ABA问题。ABA问题之前说到,compareAndSwap,是比较持有值与内存值是否相等,然后进行插入,乍一看没什么毛病,如果A、B两个线程同时取到了主内存中的i=1,这个时候...原创 2019-06-30 14:20:15 · 9356 阅读 · 0 评论 -
JUC之写时复制(集合不安全)
ArrayListArrayList是线程不安全的,多线程修改的情况会有ConcurrentModificationException异常,为了解决这个问题,可以使用Collections.synchronizedList(new ArrayList<>())和CopyOnWriteArrayList来解决。当然还有Vertor(这个就不说了)package container;...原创 2019-07-28 13:40:17 · 11384 阅读 · 0 评论