CyclicBarrier

CyclicBarrier 概念 和CountDownLatch相反,需要集齐七颗龙珠,召唤神龙。也就是做加法,开始是0,加到某个值的时候就执行 CyclicBarrier的字面意思就是可循环(cyclic)使用的屏障(Barrier)。它要求做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活,线程进入屏障通过C
阅读全文

CountDownLatch

CountDownLatch 概念 让一些线程阻塞直到另一些线程完成一系列操作才被唤醒 CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,调用线程就会被阻塞。其它线程调用CountDown方法会将计数器减1(调用CountDown方法的线程不会被阻塞),当计数器的值变成零时,因调用await方法被阻塞的线程会被唤醒,继续执行
阅读全文

Java锁之自旋锁

Java锁之自旋锁 自旋锁:spinlock,是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁,这样的好处是减少线程上下文切换的消耗,缺点是循环会消耗CPU
阅读全文

可重入锁和递归锁ReentrantLock

可重入锁和递归锁ReentrantLock 概念 可重入锁就是递归锁 指的是同一线程外层函数获得锁之后,内层递归函数仍然能获取到该锁的代码,在同一线程在外层方法获取锁的时候,在进入内层方法会自动获取锁
阅读全文

Java锁之公平锁和非公平锁

Java锁之公平锁和非公平锁 概念 公平锁 是指多个线程按照申请锁的顺序来获取锁,类似于排队买饭,先来后到,先来先服务,就是公平的,也就是队列 非公平锁
阅读全文

值传递和引用传递

值传递和引用传递 举例 /** * 值传递和引用传递 * @author: 陌溪 * @create: 2020-03-14-18:25 */ class Person { private Integer id; private String personName; public Person(String personName)
阅读全文

ArrayList线程不安全的举例

Collection线程不安全的举例 前言 1、当我们执行下面语句的时候,底层进行了什么操作 new ArrayList<Integer>(); 底层创建了一个空的数组,伴随着初始值为10
阅读全文

原子类AtomicInteger的ABA问题

原子类AtomicInteger的ABA问题 连环套路 从AtomicInteger引出下面的问题 CAS -> Unsafe -> CAS底层思想 -> ABA -> 原子引用更新 -> 如何规避ABA问题 ABA问题是什么
阅读全文