并发
BNMZY
chatgpt搬运工
展开
-
Volatile
Volatile 基本 保证线程之间的可见性(JMM原子操作) Volatile保证可见性与有序性,但是不保证原子性(需要借助synchronized这样的锁机制) 缓存可见性实现原理 底层实现主要是通过汇编lock前缀指令,它会锁定这块内存区域的缓存(缓存行锁定)并回写到主内存 IA-32架构软甲开发者手册对lock指令的解释: 会将当前处理器缓存行的数据立即写回到系统内存 这个写回内存...原创 2020-05-26 18:25:43 · 133 阅读 · 0 评论 -
JUC-concurrent包
文章目录集合类CopyOnWriteArrayListCopyOnWriteSetConcurrentHashMapCallable基本代码常用的辅助类CountDownLatchCyclicBarrierSemaphoreA 集合类 CopyOnWriteArrayList 对比传统list // List<String> list = new ArrayList<>(); //并发下ArrayList不安全,需要Synchronized /** * 解决方法 * 1. n原创 2020-05-10 22:48:19 · 238 阅读 · 0 评论 -
JUC-八锁现象
概念 由锁引发的8个问题 同一对象,两个同步方法,哪个先行? 同一对象,两个同步方法,先被调用的执行前锁住2s,哪个先行? 一个对象,一个同步,一个普通方法,哪个先行? 两个对象,分别调用两个同步方法,先被调用的执行前锁住2s,哪个先行? 增加两个静态同步方法,哪个先行? 两个对象,分别调用两个静态同步方法,哪个先行? 一个对象,一个普通同步方法,一个静态同步方法,哪个先行? 两个对象,一个普通同步方法,一个静态同步方法,哪个先行? 代码 调用区 Phone phone = new原创 2020-05-10 12:04:51 · 130 阅读 · 0 评论 -
JUC-基础,生产者&消费者
文章目录线程和进程线程状态wait/sleepLock锁1. 传统Synchronized2. lock接口3. ReentrantLock传统的生产者、消费者问题synchronized版虚假唤醒问题JUC版生产者消费者问题AA 线程和进程 java默认2个线程:Main和GC 对于java而言 Thread、Runnable、Callable java开启不了线程:start是调用native方法创建线程的 线程状态 NEW :新生 RUNNABLE :运行 BLOCKED:阻塞 WAITING原创 2020-05-10 10:54:35 · 259 阅读 · 0 评论 -
线程池
创建方式 三种线程 Thread public class MyThread extends Thread { public static void main(String[] args) { new MyThread().start(); } @Override public void run() { System.out.p...原创 2020-04-05 17:15:05 · 106 阅读 · 0 评论