并发相关
文章平均质量分 92
星火燎原bbb
这个作者很懒,什么都没留下…
展开
-
并发编程1-Synchronized及其实现原理
一、Synchronized的基本使用Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。Synchronized的作用主要有三个:(1)确保线程互斥的访问同步代码(2)保证共享变量的修改能够及时可见(3)有效解决重排序问题。从语法上讲,Synchronized总共有三种用法:(1)修饰普通方法(2)修饰静态方法(3)修饰代码块接下来我就通过几个例子...转载 2019-05-01 17:19:51 · 168 阅读 · 0 评论 -
并发编程10-LinkedHashMap原理
1 前言LinkedHashMap继承于HashMap,如果对HashMap原理还不清楚的同学,请先了解下hashmap。本文的LinkedHashMap是jdk1.7版的2 LinkedHashMap使用与实现先来一张LinkedHashMap的结构图,不要虚,看完文章再来看这个图,就秒懂了,先混个面熟:2.1 应用场景HashMap是无序的,当我们希望有顺序地去存储key-valu...转载 2019-05-03 21:16:18 · 493 阅读 · 0 评论 -
并发编程9-CyclicBarrier
前言JDK的并发包中提供了几个非常有用的工具类,这些工具类给我们在业务开发过程中提供了一种并发流程控制的手段,本文会基于实际应用场景介绍如何使用CyclicBarrier,以及内部实现机制。CyclicBarrier是什么CyclicBarrier也叫同步屏障,在JDK1.5被引入,可以让一组线程达到一个屏障时被阻塞,直到最后一个线程达到屏障时,所以被阻塞的线程才能继续执行。CyclicB...转载 2019-05-03 19:06:06 · 156 阅读 · 0 评论 -
并发编程8-线程池的原理和使用
在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?在Java中可以通过线程池来达到这样的效果。今天我们就来...转载 2019-05-03 15:52:22 · 160 阅读 · 0 评论 -
并发编程5-AQS的Condition实现原理
在经典的生产者-消费者模式中,可以使用Object.wait()和Object.notify()阻塞和唤醒线程,但是这样的处理下只能有一个等待队列。在可重入锁ReentrantLock中,使用AQS的condition可以实现设置多个等待队列,使用Lock.newCondition就可以生成一个等待队列,相比较来说这种方式就很灵活。本篇文章将介绍Condition的实现原理和基本使用方法,基本过...转载 2019-05-03 00:02:41 · 830 阅读 · 0 评论 -
并发编程7-ArrayBlockingQueue底层实现和原理
ArrayBlockingQueue的原理和底层实现的数据结构 :ArrayBlockingQueue是数组实现的线程安全的有界的阻塞队列,可以按照 FIFO(先进先出)原则对元素进行排序。线程安全是指,ArrayBlockingQueue内部通过“互斥锁”保护竞争资源,实现了多线程对竞争资源的互斥访问。而有界,则是指ArrayBlockingQueue对应的数组是有界限的。 阻塞队列,是指多...转载 2019-05-02 22:36:07 · 1951 阅读 · 0 评论 -
并发编程6-ReentrantLock
1.什么是可重锁ReentrantLock?就是支持重新进入的锁,表示该锁能够支持一个线程对资源的重复加锁。底层实现原理主要是利用通过继承AQS来实现的,也是利用通过对volatile state的CAS操作+CLH队列来实现;支持公平锁和非公平锁。CAS:Compare and Swap 比较并交换。CAS的思想很简单:3个参数,一个当前内存值V、预期值A,即将更新的值B,当前仅当预期值A...转载 2019-05-02 16:00:39 · 182 阅读 · 0 评论 -
并发编程4-AQS同步器原理
1.什么是AQS? AQS的核心思想是基于volatile int state这样的volatile变量,配合Unsafe工具对其原子性的操作来实现对当前锁状态进行修改。同步器内部依赖一个FIFO的双向队列来完成资源获取线程的排队工作。2.同步器的应用同步器主要使用方式是继承,子类通过继承同步器并实现它的抽象方法来管理同步状态,对同步状态的修改或者访问主要通过同步器提供的3个方法:get...转载 2019-05-02 13:47:21 · 303 阅读 · 0 评论 -
并发编程3-CAS原理
cas和volatile关键字 一起使用同样能够实现线程安全,是java并发包实现的基础。今天着重来分析CAS。CAS:Compare and Swap, 翻译成比较并交换。java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种乐观锁。本文先从CAS的应用说起,再深入原理解析。...转载 2019-05-01 20:53:21 · 277 阅读 · 0 评论 -
并发编程2-volatile原理
volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与内存模型相关的概念和知识,然后分析了volatile关键字的实现原理,最后给出了几个使用volatile关键字的场景。以下是本文的目录大纲:一.内存模型的相关概念二.并发编程中的三个概念三.Java内...转载 2019-05-01 18:56:28 · 149 阅读 · 0 评论