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