![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java并发编程
讲述Java并发编程基础
会飞的冰箱
做一个有故事的男人,,,
展开
-
Java并发编程学习笔记
最近整理了些java并发的相关知识点,内容还是很多的,甚至有一些自己已经忘了,特此整理汇总到这里,方便阅读,每个模块也都有跳转到这里的链接,内容有很多借鉴,也有很多自己的理解,欢迎大家指正。Java并发编程1–并发基础Java并发编程2–synchronized深入理解Java并发编程3–认识Volatile和JMMJava并发编程4–线程间通信的实现方式Java并发编程5–AQS详解Java并发编程6–ReentrantLock详解Java并发编程7–并发工具之Condition待续.原创 2020-07-16 15:16:09 · 129 阅读 · 0 评论 -
Java并发编程7–并发工具之Condition
文章目录ConditionCondition 的基本使用Condition 源码分析线程这块的一些工具类,基本都会以原理为主,通过分析别人代码的设计和实现,给自己提供积累一些方法和工具。Condition在前面学习 synchronized 的时候,有讲到 wait/notify 的基本使用,结合 synchronized 可以实现对线程的通信。既然 J.U.C 里面提供了锁的实现机制,那 J.U.C 里面有没有提供类似的线程通信的工具呢?于是发现了一个 Condition 工具类。Conditio原创 2020-07-16 14:54:41 · 168 阅读 · 0 评论 -
Java并发编程6--ReentrantLock详解
文章目录LockLock 简介Lock 的实现Lock 的类关系图ReentrantLock什么是ReentrantLock ?重入锁的设计目的ReentrantLock 的实现原理ReentrantLock 的源码分析ReentrantLock 的时序图ReentrantLock.lock()NofairSync.lockReentrantReadWriteLock什么是ReentrantReadWriteLock?LockLock 在 J.U.C 中是最核心的组件,为什么要以 Lock 作为切入点呢原创 2020-07-10 00:06:46 · 190 阅读 · 0 评论 -
Java并发编程5--AQS详解
文章目录什么是AQS什么是AQSAQS的全称为(AbstractQueuedSynchronizer)抽象的队列式同步器。这个类java.util.concurrent.locks包,它是一个同步工具也是 Lock 用来实现线程同步的核心组件。如果你搞懂了 AQS,那么 J.U.C 中绝大部分的工具都能轻松掌握。...原创 2020-07-08 00:48:56 · 742 阅读 · 0 评论 -
Java并发编程4--线程间通信的实现方式
文章目录Volatile 内存共享wait/notify 等待使用JUC工具类CountDownLatchCyclicBarrier基本LockSupport实现线程间的阻塞和唤醒Volatile 内存共享基于 volatile 关键字来实现线程间相互通信是使用共享内存的思想,上一章有过介绍,想具体了解的码友可以去看一下,Java并发编程3–认识Volatile和JMMpublic class VolatileThread implements Runnable { private static原创 2020-06-30 22:02:45 · 207 阅读 · 0 评论 -
Java并发编程3--认识Volatile和JMM
文章目录1.初步认识 Volatile一段代码引发的思考volatile 的作用volatile 关键字是如何保证可见性的?2.JMM什么是 JMM1.初步认识 Volatile一段代码引发的思考public class VolatileDemo { public static boolean stop = false; public static void main(String[] args) throws InterruptedException { Thread thread = n原创 2020-06-21 12:36:02 · 214 阅读 · 0 评论 -
Java并发编程2--synchronized深入理解
文章目录Java并发编程2--synchronized深入理解1. 由一个问题引发的思考2.导致线程安全的原因3.synchronized 的基本认识4.synchronized的加锁方式5.锁是如何存储的6.synchronized 锁的升级偏向锁轻量级锁Java并发编程2–synchronized深入理解1. 由一个问题引发的思考线程的合理使用能够提升程序的处理性能,主要有两个方面:能够利用多核 cpu 以及超线程技术来实现线程的并行执行;线程的异步化执行相比于同步执行来说,合理的异步执行原创 2020-06-04 19:11:17 · 216 阅读 · 0 评论 -
详解Thread类中interrupt()、interrupted()和isInterrupted()方法的区别
1.从源码分析区别interrupt()方法 public void interrupt() { if (this != Thread.currentThread()) checkAccess(); synchronized (blockerLock) { Interruptible b = blocker; if (b != null) { interrupt0();原创 2020-05-31 22:57:08 · 737 阅读 · 0 评论 -
Java并发编程1--并发基础
写在最开始,本文是博主学习Java并发编程的第一章,相当于笔记,写的不会太系统,陆续会把所以章节全部发完,欢迎大家批评指正。进程和线程这里简单介绍一下进程和线程的定义及关系,两者很饶人进程的定义:进程是指在系统中正在运行的一个应用程序每个进程之间是独立的,每个进程均运行在其专用的且受保护的内存线程的定义:线程是进程的基本执行单元,一个进程的所有任务都在线程中执行进程要想执行任务,必须得有线程,进程至少要有一条线程程序启动会默认开启一条线程,这条线程被称为主线程或 UI 线程两者区原创 2020-05-28 01:35:36 · 234 阅读 · 0 评论 -
什么是happens-before
什么是happens-before?从JDK5开始,提出了happens-before的概念,通过这个概念来阐述操作之间的内存可见性。如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须存在happens-before关系。这里提到的两个操作既可以是在一个线程之内,也可以是在不同线程之间。 happens-before原则定义如下: 如果一个操作happen...原创 2018-07-11 16:02:55 · 5079 阅读 · 0 评论 -
JUC学习之线程池的使用
JUC学习之线程池的使用为什么要使用线程池如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,线程池的好处...原创 2018-07-10 16:23:03 · 146 阅读 · 0 评论