java线程安全
文章平均质量分 79
徒破壁
七分天注定,三分靠努力。
越努力,越幸运!
展开
-
阻塞队列与线程池
文章目录阻塞队列与线程池阻塞队列阻塞队列类型入队出队操作生产消费者模式传统版v1版本传统版v2版本阻塞队列v3版线程池线程池几种线程池线程池七大参数线程池运行过程线程池拒绝策略使用哪种线程池拒绝策略验证自定义线程池阻塞队列与线程池阻塞队列阻塞队列类型有七种类型的阻塞队列,但常用的线程池中主要用到三种阻塞队列,所以主要看看这三种阻塞队列。ArrayBlockingQueue:由数组构成的...原创 2020-01-10 14:25:17 · 548 阅读 · 0 评论 -
集合类线程安全问题
文章目录集合类线程安全问题ArrayList并发修改异常为什么出现解决方案写时复制其他unsafe集合类集合类线程安全问题ArrayList先不谈ArrayList线程安不安全问题,看其源码可以知道,我们在new一个ArrayList的时候,其实底层使用的是数组作为数据结构的。 /** * Default initial capacity. */ priv...原创 2020-01-10 14:24:39 · 238 阅读 · 0 评论 -
java锁
文章目录java锁可重入锁及其验证手写一个自旋锁读写锁代码验证CountDownLatchCyclicBarrierSemaphoresynchronized和ReentrantLock区别死锁java锁公平锁:多个线程按照申请锁的顺序获取锁,先来后到,每个线程在获取锁时会先查看此锁维护的等待队列,如果为空,或者当前线程是等待队列的第一个,就占有锁,否则加入到等待队列中,遵从FIFO。非公...原创 2020-01-10 14:24:03 · 166 阅读 · 0 评论 -
CAS及ABA问题
CAS并发中线程安全必须保证三个要素,原子性、可见性、有序性。使用volatile可以保证可见性和有序性,但是不能保证原子性。所以还是会出现并发修改紊乱的问题。这里的解决方法可以通过synchronized修饰,但是太重了,所以使用原子类保证原子性即可,但是原子类底层是如何保证原子性的值得研究,首先一点就是CAS。CAS是什么campareAndSwap.JDK8,在AtomicInte...原创 2020-01-10 14:23:29 · 126 阅读 · 0 评论 -
volatile深度解析
volatile深度解析volatile是什么volatile是Java虚拟机提供的轻量级的同步机制。它有三个特征:保证可见性不保证原子性禁止指令重排想要理解volatile的工作机制首先要了解JMM,java memory model,即java内存模型。Java内存模型(JMM)JMM本身是一种抽象的概念,并不真实存在。它描述的是一组规则或规范,通过这组规范定义了程序中各个...原创 2020-01-10 14:22:33 · 161 阅读 · 0 评论