![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发
并发
ꦿ๑簡單點๑
若不是为生活所迫,谁愿意让自己弄得一身才华!
展开
-
锁的分类
文章目录锁的分类一、乐观锁/悲观锁乐观锁悲观锁二、独享锁/共享锁独享锁共享锁三、互斥锁/读写锁四、可重入锁五、自旋锁六、偏向锁/轻量级锁/重量级锁七、分段锁八、公平锁/非公平锁锁的分类一、乐观锁/悲观锁乐观锁与悲观锁并不是特指某两种类型的锁,是人们定义出来的概念或思想,主要是指看待并发同步的角度乐观锁顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提原创 2020-06-24 15:41:46 · 265 阅读 · 0 评论 -
CyclicBarrier - 原理解读
CyclicBarrier是一个同步辅助类,它允许一组线程相互等待直到所有线程都到达一个公共的屏障点。在程序中有固定数量的线程,这些线程有时候必须等待彼此,这种情况下,使用CyclicBarrier很有帮助。这个屏障之所以用循环修饰,是因为在所有的线程释放彼此之后,这个屏障是可以重新使用的。屏障线程的运行时机:等待的线程数量=parties之后,CyclicBarrier打开屏障之前。一、使用场景...原创 2020-06-23 23:31:17 · 176 阅读 · 0 评论 -
CountDownLatch - 原理解读
CountDownLatch是一次性的,计数器的值只能在构造方法中初始化一次,之后没有任何机制再次对其设置值,当CountDownLatch使用完毕后,它不能再次被使用。一、使用场景用法一:某一线程在开始运行前等待n个线程执行完毕将CountDownLatch的计数器初始化为n:new CountDownLatch(n) ,每当一个任务线程执行完毕,就将计数器减1, countdownlatch.countDown(),当计数器的值变为0时,在CountDownLatch上 await() .原创 2020-06-23 23:28:52 · 11576 阅读 · 26 评论 -
ConcurrentHashMap - 原理解读
一、主要用法二、源码解读原创 2020-06-23 23:24:41 · 112 阅读 · 0 评论 -
CopyOnWriteArrayList - 原理解读
一、核心思想:CopyOnWriteArrayList的核心思想是利用高并发往往是读多写少的特性,对读操作不加锁,对写操作,先复制一份新的集合,在新的集合上面修改,然后将新集合赋值给旧的引用,并通过volatile 保证其可见性,当然写操作的锁是必不可少的了。二、源码解读主要方法:indexOf、contains、get、set、add、remove、addIfAbsent和iterator...原创 2020-06-23 23:22:01 · 176 阅读 · 0 评论 -
Java阻塞队列
阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素JDK7提供了7个阻塞队列:ArrayBlockingQueue :一个由数组结构组成的有界阻塞队列。LinkedBlockingQueue :一个由链表结构组成的有.原创 2020-06-12 17:34:38 · 147 阅读 · 0 评论 -
Java阻塞队列 - ArrayBlockingQueue
ArrayBlockingQueue是Java并发包中一种基于数组结构实现的有界阻塞队列以下是该类的继承结构图:以下是该类的内部结构图:原创 2020-06-12 17:18:17 · 96 阅读 · 0 评论 -
Java阻塞队列 - LinkedBlockingDeque
LinkedBlockingDeque是Java并发包中一种基于双链表结构实现的有界阻塞队列以下是该类的继承结构图以下是该类的内部结构图:原创 2020-06-12 16:54:30 · 167 阅读 · 0 评论 -
Java阻塞队列 - LinkedBlockingQueue
LinkedBlockingQueue是Java并发包中一种基于链表结构实现的有界阻塞队列,以下是该类的继承结构图:以下是该类的结构:LinkedBlockingQueue类:实现了2个接口:BlockingQueue、Serializable继承了1个抽象类:AbstractQueue拥有3个内部类:Node、Itr、LBQSpliterator拥有3个构造方法:LinkedBlockingQueue()、LinkedBlockingQueue(int capacity)、Li.原创 2020-06-10 14:53:46 · 235 阅读 · 0 评论