07 2021 档案
摘要:一、CountDownLatch是什么 CountDownLatch是java.util.concurrent包下的类。它可以使线程处于等候状态,当任务执行数量递减为0时,自动唤醒等待线程。这样可以控制多线程的执行顺序。 二、CountDownLatch的使用 private Integer tas
阅读全文
摘要:一、非公平锁 非公平锁是抢占式的,有优先级区分的线程争夺锁。 包括: synchronized关键字 new ReentrantLock()默认创建的也是非公平锁 二、公平锁 公平锁是先到先得的原则,排队获取。 new ReentrantLock(true) public ReentrantLock
阅读全文
摘要:一、不安全集合类 说到不安全的集合类,一般会想到ArrayList,HashSet,HashMap,这三种最常用的。 二、ArrayList类的不安全性 不安全原因 ArrayList的底层是数组,new ArrayList()是定义一个空数组,当添加数据的时候进行扩容,初次扩容容量默认为10,通过
阅读全文
摘要:一、CAS是什么 比较后交换,为了保证原子性而进行的比较和交换。 二、CAS的使用 前面说到volatile关键字是不保证原子性的,为了满足轻量级的JMM原则,可以通过volatile + CAS实现轻量级的JMM原则(保证数据可见性、保证原子性、禁止指令重排以保证有序性原则)。例如: public
阅读全文
摘要:volatile关键字的理解 一、volatile是什么 volatile是JVM虚拟机提供的轻量级的同步机制: 保证可见性:当数据存储到主内存中时,其他线程要使用数据,会将其拷贝一份到自己的工作内存中进行操作,改变数据后再赋值给主内存,为了保证与其他线程数据同步,需要通知其他已拿到拷贝数据的线程。
阅读全文