
JUC并发编程
JUC并发编程详细解说,底层原理探索,JUC编程模型,解密java程序员工作中的代码漏洞。
makyan
1、计算机软件、微服务开发、移动客户端开发。
2、系统架构设计,需求调研、分析、设计,业务架构、技术架构、数据架构设计。
3、具备行业解决方案设计与编写。
4、项目管理。
5、当前互联网研究,针对传统产业转型升级的产业互联网研究,并正在编写《产业互联网》书籍。
展开
-
JUC并发编程(十三)-Stream流式计算
13、Stream流式计算使用Stream流式计算,将大大提高效率!13.1. 流的基本概念13.1.1 什么是流? Stream是操作集合的一种计算数据的工具!集合就是数据,Stream是计算集合中的数据的工具 流是Java8引入的全新概念,它用来处理集合中的数据,暂且可以把它理解为一种高级集合。 集合操作非常麻烦,若要对集合进行筛选、投影,需要写...原创 2020-02-27 12:33:44 · 1850 阅读 · 0 评论 -
JUC并发编程(十二)-四大函数式接口
12、四大函数式接口函数式接口在包java.util.function中,函数式接口在后面章节Stream中将大量使用。12.1. 函数型接口Function:有一个输入,有一个输出函数型接口,有一个输入,有一个输出源代码如下:@FunctionalInterfacepublic interface Function<T, R> { /** * A...原创 2020-02-27 11:55:54 · 398 阅读 · 0 评论 -
高并发编程底层原理探索
Hi All Darling: 您是否有过这样的经历:业务量不大,但服务器的CPU、内存总矗立在那冰冷的孤独高台! 您是否有过这样的经历:程序在我这里满院撒欢,而到运维处,却成十月小孩,勉强能走! 您是否有过这样的经历:我的程序没问题,数据库的错误数据是怎么产生的呢! 您是否有过这样的经历:您的业务量单一且流量的获取犹如疫情下的口罩,但服务器费用却高高在上! ...原创 2020-02-26 22:55:13 · 401 阅读 · 0 评论 -
JUC并发编程(二十一)-Java锁详解与 jstack堆栈分析
21、Java锁21.1.公平锁非公平锁是什么公平锁:就是非常公平,先来后到非公平锁:就是不公平,不按照先后顺序,可以插队!存在即道理,有的时候插队可以提高效率。两者区别公平锁:并发环境下,每个线程在获取锁的时候都要先看一下这个锁的等待队列!如果为空,那就可以占有锁!否则就要等待!非公平锁:上来就直接尝试占有该锁!如果失败就会采用类似公平锁的方式!synchronized ...原创 2020-02-26 21:52:23 · 283 阅读 · 0 评论 -
JUC并发编程(二十)-原子引用AtomicReference与AtomicStampedReferenc
20、原子引用:AtomicReference原子类 AtomicInteger 的ABA问题谈谈?原子更新引用知道吗?CAS 会导致 ABA的问题!CAS算法的前提是:取出内存中某个时刻的数据,比较并交换! 在这个时间差内有可能数据被修改!如下示例:package com.interview.concurrent.cas;import java.util.concurrent....原创 2020-02-26 21:49:00 · 694 阅读 · 1 评论 -
JUC并发编程(十九)-深入理解CAS
19、深入理解CAS19.1. CAS是什么CAS : CompareAndSwarp ,比较并交换package com.interview.concurrent.cas; import java.util.concurrent.atomic.AtomicInteger;/** * @author yangxj * @description 描述: compare...原创 2020-02-26 21:46:10 · 389 阅读 · 0 评论 -
JUC并发编程(十八)-深入单例模式(您的单例模式写对了吗?)
18、深入单例模式单例模式编码模型:1、构造器私有:这是单例模式的思想; // 单例模式核心思想,构造器私有! private Hungry(){ //这里可以编写相关逻辑 }2、编写静态获取对象方法,至于方法中的实例怎么创建,有各种方法。 public static Hungry getInstance(){ return ......; ...原创 2020-02-26 21:43:43 · 289 阅读 · 0 评论 -
JUC并发编程(十七)-volatile 详解
17、volatilevolatile是不错的机制,但是也不能保证原子性。17.1. volatile 可见性代码验证可见性package com.interview.concurrent.volatiles;import java.util.concurrent.TimeUnit;/** * @description:测试volatile的可见性 * @author...原创 2020-02-26 21:40:09 · 282 阅读 · 0 评论 -
JUC并发编程(十六)-JMM详解
16、JMM详解问题:请你谈谈你对volatile的理解volatile 是 轻量级的 同步机制:1、保证可见性2、不保证原子性3、禁止指令重排!什么是JMM JMM 是一个抽象的概念!并不真实存在!它是一组规范! 程序会跑在不同的操作系统、不同的硬件上,可能在你的电脑上运行完好,在运维那边运行就报错!这些都是底层操作系统、硬件不同引起的,为了屏蔽操...原创 2020-02-26 21:28:42 · 411 阅读 · 0 评论 -
JUC并发编程(十五)-异步回调:Futrue 的实现类CompletableFuture
15、异步回调:Futrue 的实现类CompletableFuture概述Futrue 设计初衷: 对将来会发生的结果进行建模~程序的性能要高,要异步处理!同步并阻塞!A 线程做完了返回一个结果告诉main我做完了!Futrue就相当于ajax。实例:CompletableFuture无返回结果情况测试package com.interview.concurrent....原创 2020-02-26 21:27:55 · 632 阅读 · 0 评论 -
JUC并发编程(十四)-分支合并ForkJoin
14、分支合并:ForkJoin14.1. 什么是ForkJoin ForkJoin,任务切分、合并操作。大数据中的mapreduce ,就是任务切分,结果合并。原理如下图所示:14.2. 工作窃取工作窃取A 任务1 --> 任务2 --> 任务3 --> 任务4 A领先执行完成 ,帮B执行任务(从B任务的尾部开始窃取...原创 2020-02-26 21:25:19 · 483 阅读 · 0 评论 -
JUC并发编程(十一)-线程池ThreadPoolExecutor详解
11、线程池线程池重点内容:三大方法、7大参数、拒绝策略、优化配置。11.1. 线程池原理池化技术 程序运行的本质:占用系统资源,CPU/磁盘网络进行使用!我们希望可以高效的使用!池化技术就是演进出来的。 简单的说,池化技术就是:提前准备一些资源、以供使用! 线程池、连接池、内存池、对象池…这些东西都是池化技术。 线程的创建和销毁,...原创 2020-02-26 21:19:41 · 590 阅读 · 0 评论 -
JUC并发编程(十)-阻塞队列BlockingQueue
10、阻塞队列:BlockingQueue10.1. 阻塞队列概念队列:排队 特性:先进先出 FIFO阻塞:必须要阻塞、不得不阻塞,原理如下:10.2. 接口架构图jdk官方文档如下:阻塞队列:与List、Set类似,都是继承Collection.10.3.ArrayBlockingQueue API 的使用1、ArrayBlockingQueue 是一个有限的blocki...原创 2020-02-26 21:13:49 · 241 阅读 · 0 评论 -
JUC并发编程(九)- 读写锁ReadWriteLock详解
9、读写锁:ReadWriteLock读写分离:读写分离是一种思想。 之前讲的Lock是一个同步锁,它对资源的读和写,要么都锁住,要么都不锁,有的时候我们的资源,希望读的时候不锁,写的时候锁住,这样在安全的基础上能提高很大的效率。 我们希望锁只添加在需要的地方,如在写的时候,加锁,只允许一个线程去操作,读的时候不加锁,所有的线程都可以去读。这样ReadWrite...原创 2020-02-26 21:10:52 · 277 阅读 · 0 评论 -
JUC并发编程(八)-JUC常用辅助类
8、常用辅助类8.1、CountDownLatchCountDownLatch:减计数器,使用场景: 乘坐飞机时,乘务服务员都要根据手中的订票人数清点人数,只有人数到齐了才关门起飞,那怎么有效精准的控制什么时候关门起飞呢,使用CountDownLatch减法计数器有效控制。CountDownLatch 编码模型:CountDownLatch countDownLatch = ne...原创 2020-02-26 21:07:38 · 630 阅读 · 0 评论 -
JUC并发编程(七)-Thread与Callable之间的适配类FutureTask
7、Callable线程创建方式 Thread、Runnable、Callable区别:1、是否有返回值Runnable 没有返回值,Callable有返回值2、是否跑出异常Runnable 没有异常,Callable有异常3、方法不同, run(),call()Runnable 运行的方法是run,Callable运行的方法是call7.1. Thread与Callable...原创 2020-02-26 21:02:53 · 320 阅读 · 0 评论 -
JUC并发编程(六)-集合类不安全
6、集合类不安全6.1. List不安全list 不安全6.1.1. 单线程:安全package com.coding.collunsafe;import java.util.Arrays;import java.util.List;public class UnsafeList1 { public static void main(String[] args) {...原创 2020-02-26 21:01:20 · 405 阅读 · 0 评论 -
JUC并发编程(四)-生产者和消费者
4、生产者和消费者线程间默认是无法通信的,所以需要调度线程。Producer And Consumer,以下代码中简称Pac。4.1. 生产者消费者编码模型1、判断2、干活3、通知4.2. 生产者和消费者- synchroinzed 版4.2.1. synchroinzed 实现的生产者与消费者package com.interview.concurrent.lock.pro...原创 2020-02-26 20:53:58 · 353 阅读 · 0 评论 -
JUC并发编程(五)-8锁的现象
5、8锁的现象以下名词解释:顺序执行:先调用的先执行;随机执行:没有规律,与计算机硬件资源有关,哪个线程先得到资源就先执行,各个线程之间互不干扰。5.1. 多个线程使用同一把锁-顺序执行1、多个线程使用同一个对象,多个线程就是使用一把锁,先调用的先执行!示例1、标准访问,请问先打印邮件还是短信?package com.interview.concurrent.lock.lo...原创 2020-02-26 20:56:00 · 2145 阅读 · 2 评论 -
JUC并发编程(三)-Lock锁详解
3、Lock锁3.1. 多线程的编程模型多线程编程的代码编写模型:1、高内聚,低耦合 :必须保证业务代码的高内聚、低耦合;2、线程去操作(调用对外暴露的方法) 资源类。3.2. 使用传统的关键字synchronized实现Lock锁要按照多线程的编程模型来实现Lock锁。如下方式,在企业中静止这样写。package com.interview.concurrent.lock;...原创 2020-02-26 20:50:10 · 713 阅读 · 0 评论 -
JUC并发编程(二)-进程和线程回顾
2、进程和线程回顾2.1. 什么是进程 /线程进程 / 线程是什么?进程:像 QQ.exe 、 Music.exe 、程序就是一个进程线程:一个进程中可能包含多个线程,至少包含一个。JAVA至少包括两个线程:main和GC 线程。2.2. 并发/并行是什么并发 / 并行是什么?并发编程? 并发。并行;并发:多线程,多个线程操作一个资源类,CPU快速交替的执行。并行:多...原创 2020-02-26 20:47:53 · 305 阅读 · 0 评论 -
JUC 并发编程(一)-什么是JUC
JUC 并发编程模型注意,一定要是JDK1.8、IDE 一定要设置技术:我们要用一句话来说出这项技术,如果说不出,那么你就不会!编程:每一项业务使用什么技术来实现,都有一套编程模型。1、什么是JUC什么是JUC:java.util.concurrent包名的简写,是关于并发编程的API。与JUC相关的有三个包:java.util.concurrent、java.util.conc...原创 2020-02-26 19:17:34 · 1640 阅读 · 1 评论