![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发
Java高性能并发编程
Code我敲你
敢于竞争,善于转化
展开
-
CyclicBarrier和CountDownLatch的用法与区别
转载于:CyclicBarrier和CountDownLatch的用法与区别两者区别CountDownLatch的计数器只能使用一次。而CyclicBarrier的计数器可以使用reset()方法重置。所以CyclicBarrier能处理更为复杂的业务场景,比如如果计算发生错误,可以重置计数器,并让线程们重新执行一次。CountDownLatch会阻塞主线程,CyclicBarrier不会...转载 2020-04-08 21:51:35 · 163 阅读 · 0 评论 -
详解volatile关键字
引言首先volatile是轻量级的同步机制,相比synchronized同步机制。因为它不会引起线程上下文的切换和调度。但是volatile 变量的同步性较差(有时它更简单并且开销更低),而且其使用也更容易出错。这里先介绍在Java多线程的开发中有三种特性:原子性、可见性和有序性。原子性:可以直接描述成一次操作中要不一次成功,要不改变。可见性:当一个线程修改了线程共享变量的值,其它线程能...原创 2020-03-16 12:15:09 · 177 阅读 · 0 评论 -
Synchronized关键字解析
引言在Java中实现多线程同步访问共享变量的最广泛实现方法就是使用关键字synchronized。上图是JVM内存模型。我们知道JVM内存结构主要分为三大块:堆、栈和方法区。每个线程都有自己的一个虚拟机栈,栈保存着局部变量以及所有调用的方法的参数和返回值。其他线程无法访问该线程的栈中数据。栈仅能保存基本类型和对象引用,对象是存放在堆中的。堆内存和方法区中的静态变量等数据可以被线程共享,而同...转载 2020-03-16 17:23:49 · 107 阅读 · 0 评论 -
如何深入理解JUC的核心类AQS
一行一行源码分析清楚AbstractQueuedSynchronizer本文转自:https://www.javadoop.com/post/AbstractQueuedSynchronizer在分析 Java 并发包 java.util.concurrent 源码的时候,少不了需要了解 AbstractQueuedSynchronizer(以下简写AQS)这个抽象类,因为它是 Java 并发...转载 2020-03-16 18:11:47 · 206 阅读 · 0 评论 -
理解Java线程池
深度解读 java 线程池设计思想及源码实现https://www.javadoop.com/post/java-thread-pool这边文章里都是用源码形式讲解线程池的运行原理的先简单说说这个继承结构,Executor 位于最顶层,也是最简单的,就一个 execute(Runnable runnable) 接口方法定义。ExecutorService 也是接口,在 Executor ...转载 2020-03-16 22:29:25 · 94 阅读 · 0 评论