
JUC
文章平均质量分 70
针对 java.util.concurrent 包下的常用高并发技术的学习与研究
少歌
轻轻地我走了,正如我轻轻地来,挥一挥衣袖,不带走一片云彩。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JUC——线程池
先说思想池化技术是一种设计思想:预先创建好资源并保留,避免资源的频繁创建 和 销毁 而浪费CPU资源。常见场景:线程池对象池连接池线程池的三大方法单一线程的线程池public static void main(String[] args) { //创建单一(大小)线程池 ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor(); try { for(原创 2021-05-25 20:44:33 · 210 阅读 · 0 评论 -
JUC——CAS与ABA问题
什么是CAS?CAS能做什么?什么是ABA问题?ABA问题是怎么解决的?不解决会有什么样的后果?原创 2020-12-21 11:35:33 · 301 阅读 · 1 评论 -
JUC——安全容器类(CopyOnWriteArrayList,CopyOnWriteArraySet 和 ConcurrentHashMap)
引入在多线程下,List ,Set ,Map 都是不安全的。先拿List举个例子。原创 2020-12-16 01:42:07 · 372 阅读 · 1 评论 -
JUC——volatile关键字(从JMM理论基础到单例模式实践)
概述你对 volatile 关键词了解多少。首先 volatile 是个Java关键词。volatile 是Java虚拟机提供的一种 轻量级同步机制1. 保证可见性2. 不保证原子性3. 禁止指令重排阐述volatile 保证可见性。那什么是可见性?研究这个之前,我们不妨先来了解一下 JMM (Java内存模型)。JMM 的一些约定:线程释放锁前,必须把共享变量值 刷回 主存中去线程获得锁前,必须先把主存中最新的共享变量值读取到自己工作内存中。加原创 2020-12-01 18:06:27 · 214 阅读 · 0 评论 -
JUC——深刻理解锁(边边奋斗史)
引入今天我们将通过几个场景来深刻的理解几个问题。如下:什么是锁?是谁的锁?锁的是谁?场景1import java.util.concurrent.TimeUnit;/** * @ClassName test1 * @Description * @Author SkySong * @Date 2020-10-11 18:13 */public class test1 { public static void main(String[] args) throws I原创 2020-10-11 21:00:00 · 571 阅读 · 4 评论 -
JUC——异步回调(CompletableFuture)
概述何为异步?在了解这个问题之前 先来看看什么是同步。线程发出一个请求,在这个请求的相应没回来之前,此线程啥也不能做,只能等着。就好比你现在 在看这篇博客,饿了想吃东西,于是出去买饭,你不得不终止现在的事情,等卖完饭回来在看。再来看异步:线程发出一个请求,此线程不必等着响应回来,可以继续处理其他事情。就好比你在看博客,饿了点了外卖,然后继续看,外卖到了会给你打电话。这个电话就是响应。...原创 2021-01-01 23:44:59 · 420 阅读 · 2 评论 -
JUC——ForkJoin(分而治之)
引用ForkJoin框架是处理任务的一种决策——“大事化小,小事化了”是其主要思想。分而治之利用此框架的思想,将比较大的任务拆分成小任务,再借助多线程分别处理计算,最后在把结果合并起来,返回最终的结果。上图:可见画功了得!!啊呸!!!实现通过实现一个小例子来理解这个过程。实现从 1 加到 10亿。创建任务类:import java.util.concurrent.RecursiveTask;/** * “这看起来很像递归,有关类的递归” * “淦!就是原创 2020-11-25 15:41:26 · 310 阅读 · 2 评论 -
JUC——Callable与Runnable
Callable与Runnable的关系异同点:他们都可以作为线程的实现接口Callable有返回值,而 Runnable没有返回值Callable可以抛出异常,而Runnable不能Callable的实现方法为 Call() ,Runnable的实现方法为Run()这些都是我们明面上能看到的区别。二者与Thread的关系Thread 是我们最常用的 线程实现类,他和 Runnable 有着 很直接的关系:Thread 实现了 Runnable 接口,是的,,这相当直接。但原创 2020-11-06 16:35:26 · 239 阅读 · 1 评论 -
JUC——走进并发编程(java.util.concurrent)
什么是JUC它是java.util 下的一个工具包 concurrent,里面装着与并发编程相关的类等。回顾线程创建,发现不同首先是我们熟悉的 RunnableRunnable 这个接口是 java.lang 包下的。当我们创建线程类的时候,会直接或间接的实现这个接口:直接实现 Runnable 接口继承 Thread 类(Thread类也是实现了Runnable 接口的)再来看Callable,它也是个接口,并且是属于java.util.concurrent包下的接口原创 2020-11-06 14:47:59 · 178 阅读 · 0 评论 -
JUC——阻塞队列(边边奋斗史)
明确主体什么是 阻塞队列?这次我们讨论的主体是 BlockingQueue ,他是一个interface(接口)尝试思考 阻塞队列 的使用场景。多线程开发线程池四组API(存取)通过对 阻塞队列 的 “存”、“取”,来了解 BlockingQueue 的四组 API:方式抛出异常不抛异常阻塞等待限时等待添加add(E e)offer(E e)put(E e)offer(E e,long time,TimeUnit unit)移除rem原创 2020-10-27 17:31:12 · 190 阅读 · 1 评论