
Java并发编程(JUC)
文章平均质量分 94
pcwl1206
这个作者很懒,什么都没留下…
展开
-
【搞定Java并发编程】第12篇:happens-before
上一篇:final域的内存语义:https://blog.youkuaiyun.com/pcwl1206/article/details/84925372目 录:1、JMM的设计2、happens-before的定义3、happens-before规则其实我们在前面的Java内存模型中已经讲过happens-before。但是因为happens-before是JMM最核心的概念。所以这...原创 2018-12-09 18:22:22 · 391 阅读 · 0 评论 -
【搞定Java并发编程】第19篇:重入锁 --- ReentrantLock 详解
AQS系列文章: 1、队列同步器AQS源码分析之概要分析2、队列同步器AQS源码分析之独占模式3、队列同步器AQS源码分析之共享模式4、队列同步器AQS源码分析之Condition接口、等待队列 先推荐两篇好文章: 1、深入剖析基于并发AQS的(独占锁)重入锁(ReetrantLock)及其Condition实现原理【写的非常好】2、 ReentrantLock源...转载 2018-12-14 22:28:45 · 473 阅读 · 0 评论 -
【搞定Java并发编程】第13篇:重排序
上一篇:happens-before:https://blog.youkuaiyun.com/pcwl1206/article/details/84929752目 录:1、数据依赖性2、as-if-serial语义3、程序顺序规则4、重排序对多线程的影响5、指令重排的案例讲解重排序:指编译器和处理器为了优化程序性能而对指令序列进行重新排序的一种手段。1、数据依赖性如果两个...原创 2018-12-09 19:55:13 · 305 阅读 · 0 评论 -
【搞定Java并发编程】第20篇:读写锁 --- ReentrantReadWriteLock详解
上一篇:重入锁 --- ReentrantLock 详解(点击查看)本文目录:1、读写锁的概述2、读写锁的具体实现2.1、读写状态的设计2.2、锁的获取2.2.1、写锁的获取2.2.2、读锁的获取2.3、锁的释放2.3.1、写锁的释放2.3.2、读锁的释放3、ReentrantReadWriteLock中的其他方法3.1、getOwner()3....转载 2018-12-16 13:41:50 · 437 阅读 · 0 评论 -
【搞定Java并发编程】面试题整理
博主秋招提前批已拿百度、字节跳动、拼多多、顺丰等公司的offer,可加微信:pcwl_Java 一起交流秋招面试经验,可获得博主的秋招简历和复习笔记。 在Java中守护线程和本地线程区别? Java中的线程分为两种:守护线程(Daemon)和用户线程(User)。任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(bool on);true则把该线程...原创 2018-12-10 12:20:25 · 961 阅读 · 0 评论 -
【搞定Java并发编程】第21篇:Java并发容器之ConcurrentHashMap详解
上一篇:读写锁 --- ReentrantReadWriteLock详解本文目录:1、为什么要使用ConcurrentHashMap?2、ConcurrentHashMap的实现2.1、ConcurrentHashMap中主要的成员变量、成员方法和内部类2.2、分段锁的内部结构2.3、ConcurrentHashMap的初始化2.4、如何定位Segment(锁)和元素...转载 2018-12-16 20:11:18 · 306 阅读 · 0 评论 -
【搞定Java并发编程】第22篇:Java中的阻塞队列 BlockingQueue 详解
上一篇:Java并发容器之ConcurrentHashMap详解本文目录:1、阻塞队列的基本概念2、ArrayBlockingQueue2.1、ArrayBlockingQueue的基本使用2.2、ArrayBlockingQueue原理概要2.3、ArrayBlockingQueue的(阻塞)添加的实现原理2.3.1、add(E e)方法 和 offer(E e)方...转载 2018-12-17 16:46:18 · 610 阅读 · 0 评论 -
【搞定Java并发编程】第23篇:Fork/Join 框架详解
上一篇:Java中的阻塞队列 BlockingQueue 详解本文目录:1、什么是 Fork/Join 框架2、工作窃取算法3、Fork/Join 框架的设计 4、使用 Fork/Join 框架5、Fork/Join 框架的异常处理6、Frok/Join 框架的实现原理6.1、ForkJoinTask 的 fork 方法实现原理6.2、ForkJoinTask ...原创 2018-12-17 20:50:15 · 298 阅读 · 0 评论 -
【搞定Java并发编程】第24篇:Java中的并发工具类之CountDownLatch
上一篇:Java中的阻塞队列 BlockingQueue 详解本文目录:1、CountDownLatch的基本概述2、CountDownLatch的使用案例3、CountDownLatch的源码分析1、CountDownLatch的基本概述CountDownLatch允许一个或多个线程等待其他线程完成操作。CountDownLatch又称为“闭锁”,它是一个同步辅助...原创 2018-12-18 11:44:08 · 495 阅读 · 0 评论 -
【搞定Java并发编程】第25篇:Java中的并发工具类之同步屏障 CyclicBarrier
上一篇:Java中的并发工具类之CountDownLatch本文目录:1、CyclicBarrier的简单概述2、CyclicBarrier 的源码分析3、CyclicBarrier与CountDownLatch的区别1、CyclicBarrier的简单概述现实生活中我们经常会遇到这样的情景,在进行某个活动前需要等待人全部都齐了才开始。例如吃饭时要等全家人都上座了才动筷子,...转载 2018-12-18 14:45:10 · 348 阅读 · 0 评论 -
【搞定Java并发编程】第14篇:Java中锁的概述
上一篇:重排序:https://blog.youkuaiyun.com/pcwl1206/article/details/849306691、Lock接口锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源(但有些锁可以允许多个线程并发访问共享资源,比如:读写锁)。在Lock接口出现之前,Java程序靠synchronized关键字实现锁功能。而Java SE5...原创 2018-12-14 12:19:31 · 253 阅读 · 0 评论 -
【搞定Java并发编程】第26篇:Java中的并发工具类之控制并发线程数的 Semaphore
上一篇:Java中的并发工具类之同步屏障 CyclicBarrier本文目录:1、获取许可证2、释放许可证本文转载自:https://mp.weixin.qq.com/s/LS8YBKpiJnHEY1kMWmwoxg推荐阅读:剖析基于并发AQS的共享锁的实现(基于信号量Semaphore)【写的非常好】Semphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协...转载 2018-12-18 15:59:30 · 245 阅读 · 0 评论 -
【搞定Java并发编程】第27篇:Java中的并发工具类之线程间交换数据的 Exchanger
上一篇:Java中的并发工具类之控制并发线程数的 SemaphoreExchanger(交换者)是一个用于线程间协作的工具类。Exchanger用于进行线程间的数据交换。它提供一个同步点,在这个同步点,两个线程可以交换彼此的数据。这两个线程通过exchange方法交换数据,如果第一个线程先执行exchange()方法,它会一直等待第二个线程也执行exchange方法,当两个线程都到达同步点时,...原创 2018-12-18 17:00:18 · 294 阅读 · 0 评论 -
【搞定Java并发编程】第11篇:final域的内存语义
上一篇文章:锁的内存语义:https://blog.youkuaiyun.com/pcwl1206/article/details/84921447目 录:1、final域的重排序规则2、写final域的重排序规则3、读final域的重排序规则4、final域为引用类型5、为什么final引用不能从构造函数内“逸出”?6、final语义在处理器中的实现7、JSR-133为什么...原创 2018-12-09 13:40:45 · 432 阅读 · 3 评论 -
【搞定Java并发编程】第7篇:Java内存模型详解
上一篇:ThreadLocal详解:https://blog.youkuaiyun.com/pcwl1206/article/details/84859661其实在Java虚拟机的学习中,我们或多或少都已经接触过了有关Java内存模型的相关概念(点击查看),只不过在Java虚拟机中讲的不够详细,因此在Java并发编程中,再对Java内存模型做详细讲解。目 录:一、并发编程模型的两个关键问题二...转载 2018-12-07 17:56:25 · 591 阅读 · 0 评论 -
【搞定Java并发编程】第1篇:线程的五种可用状态
本文转载自牛客网上一网友的回答:概括的解释下线程的几种可用状态第一种状态:新建(new):新建了一个线程对象。例如,Thread thread = new Thread();第二种状态:可运行状态(Runnable):又叫“就绪状态”。线程新建后,其他线程(比如main线程)调用了该对象的start()方法,从而来启动该线程。Runnable状态的线程位于可运行线程池中,等待被线程调度...转载 2018-12-01 11:37:28 · 550 阅读 · 0 评论 -
【搞定Java并发编程】第8篇:volatile关键字详解
上一篇:Java内存模型详解:https://blog.youkuaiyun.com/pcwl1206/article/details/84871090目 录:1、volatile的作用1.1、volatile的可见性1.2、volatile禁止指令重排序2、volatile写-读建立的happens-before关系3、volatile写-读的内存语义4、volatile的内存...转载 2018-12-07 20:14:26 · 593 阅读 · 0 评论 -
【搞定Java并发编程】第2篇:并发基础概述
上一篇:线程的五种可用状态目 录:1、什么是并发2、Java的多线程和并发性3、多线程的优点4、多线程的代价5、竞态条件与临界区6、线程安全与共享资源7、线程安全及不可变性1、什么是并发在过去单CPU时代,单任务在一个时间点只能执行单一程序。之后发展到多任务阶段,计算机能在同一时间点并行执行多任务或多进程。虽然并不是真正意义上的“同一时间点”,而是多个任务...转载 2018-12-05 15:39:35 · 328 阅读 · 0 评论 -
【搞定Java并发编程】第9篇:CAS详解
上一篇:volatile关键字详解:https://blog.youkuaiyun.com/pcwl1206/article/details/84881395目 录:一、CAS基本概念1.1、CAS的定义1.2、CAS的3个操作数 二、Java如何实现原子操作2.1、相关概念2.2、处理器如何实现原子操作2.3、Java如何实现原子操作三、原子变量四、AtomicIn...原创 2018-12-08 16:42:23 · 532 阅读 · 0 评论 -
【搞定Java并发编程】第3篇:多线程概述~上篇
上一篇:并发基础概述:https://blog.youkuaiyun.com/pcwl1206/article/details/84833911目 录:1、什么是线程2、线程的创建2.1、Thread和Runnable简介2.2、Thread和Runnable的异同点2.3、Thread和Runnable的多线程示例3、Run方法和Start方法的区别4、线程的状态1、什...原创 2018-12-05 18:57:25 · 337 阅读 · 0 评论 -
【搞定Java并发编程】第15篇:队列同步器AQS源码分析之概要分析
AQS系列文章:1、队列同步器AQS源码分析之概要分析2、队列同步器AQS源码分析之独占模式3、队列同步器AQS源码分析之共享模式4、队列同步器AQS源码分析之Condition接口、等待队列先推荐两篇不错的博文:1、一行一行源码分析清楚AbstractQueuedSynchronizer2、深入剖析基于并发AQS的(独占锁)重入锁(ReetrantLock)及其Con...原创 2018-12-14 12:19:50 · 510 阅读 · 0 评论 -
【搞定Java并发编程】第4篇:多线程概述~下篇
上一篇:多线程上篇:https://blog.youkuaiyun.com/pcwl1206/article/details/84837530目 录:1、等待/唤醒机制2、线程中断3、线程终止4、线程休眠sleep5、线程让步yield()6、join()方法7、sleep()、wait()、yield()和join()方法的区别8、Daemon线程1、等待/唤醒机制...转载 2018-12-06 11:12:56 · 362 阅读 · 0 评论 -
【搞定Java并发编程】第16篇:队列同步器AQS源码分析之独占模式
AQS系列文章:1、队列同步器AQS源码分析之概要分析2、队列同步器AQS源码分析之独占模式3、队列同步器AQS源码分析之共享模式4、队列同步器AQS源码分析之Condition接口、等待队列本文主要讲解队列同步器AQS的独占模式:主要分为独占式同步状态获取(不响应中断)、独占式同步状态释放、独占式获取同步状态(响应中断)、独占式超时获取同步状态。目 录:1、独占式同...原创 2018-12-14 12:20:08 · 387 阅读 · 0 评论 -
【搞定Java并发编程】第5篇:synchronized关键字
多线程上篇:https://blog.youkuaiyun.com/pcwl1206/article/details/84837530多线程下篇:https://blog.youkuaiyun.com/pcwl1206/article/details/84843170本文转发自:https://blog.youkuaiyun.com/javazejian/article/details/72828483这是一篇值得多读几...转载 2018-12-06 16:08:57 · 479 阅读 · 1 评论 -
【搞定Java并发编程】第17篇:队列同步器AQS源码分析之共享模式
AQS系列文章:1、队列同步器AQS源码分析之概要分析2、队列同步器AQS源码分析之独占模式3、队列同步器AQS源码分析之共享模式4、队列同步器AQS源码分析之Condition接口、等待队列通过上一篇文章的的分析,我们知道独占模式获取同步状态(或者说获取锁)有三种方式,分别是:独占式同步状态获取(不响应中断)、独占式同步状态获取(响应中断)和超时获取同步状态。在共享模式下...原创 2018-12-14 12:20:21 · 311 阅读 · 0 评论 -
【搞定Java并发编程】第18篇:队列同步器AQS源码分析之Condition接口、等待队列
AQS系列文章:1、队列同步器AQS源码分析之概要分析2、队列同步器AQS源码分析之独占模式3、队列同步器AQS源码分析之共享模式4、队列同步器AQS源码分析之Condition接口、等待队列通过前面三篇关于AQS文章的学习,我们深入了解了AbstractQueuedSynchronizer的内部结构和一些设计理念,知道了AbstractQueuedSynchronizer内部...原创 2018-12-14 12:20:30 · 749 阅读 · 0 评论 -
【搞定Java并发编程】第6篇:ThreadLocal详解
上一篇:synchronized关键字:https://blog.youkuaiyun.com/pcwl1206/article/details/84849400目 录:1、ThreadLocal是什么?2、ThreadLocal使用示例3、ThreadLocal源码分析3.1、ThreadLocalMap3.2、get()3.3、set(T value)3.4、initi...转载 2018-12-06 21:03:06 · 460 阅读 · 0 评论 -
【搞定Java并发编程】第29篇:Executor 框架详解
上一篇:Java中的线程池详解本文目录:1、Executor 框架简介1.1、Executor 框架的两级调度模型1.2、Executor 框架的结构与成员2、ThreadPoolExecutor 详解2.1、FixedThreadPool2.2、SingleThreadExecutor 2. 3、CachedThreadPool2.4、具体应用案例3、S...原创 2018-12-20 17:40:07 · 531 阅读 · 0 评论 -
【搞定Java并发编程】第10篇:锁的内存语义
上一篇:CAS详解:https://blog.youkuaiyun.com/pcwl1206/article/details/84892287目 录:1、锁的释放-获取建立的happens-before关系2、释放锁和获取锁的内存语义3、锁内存语义的实现4、concurrent包的实现众所周知,锁可以让临界区互斥执行。这里将介绍锁的另一个同样重要,但是经常被忽视的功能:“锁的内存语义...原创 2018-12-09 12:25:26 · 270 阅读 · 0 评论 -
【搞定Java并发编程】第28篇:Java中的线程池详解
上一篇:Java中的并发工具类之线程间交换数据的 Exchanger本文目录:1、线程池的实现原理 2、线程池的使用2.1、线程池的创建2.2、向线程池提交任务2.3、关闭线程池2.4、合理地配置线程池2.5、线程池的监控3、线程池的源码解析3.1、总览3.2、Executor 接口3.3、ExecutorService 接口3.4、Future...转载 2018-12-19 15:04:55 · 443 阅读 · 0 评论