![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JUC多线程及并发包
文章平均质量分 65
工作经验或者面试题
Java&Mango
分享学习和工作中的一些知识和经验。
展开
-
为什么AtomicInteger能够实现原子性?以及CAS的底层原理
为什么AtomicInteger能够实现原子性?以及CAS的底层原理原创 2022-05-15 22:52:00 · 1601 阅读 · 0 评论 -
Java内存模型(JMM)底层交互流程讲解
JMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。JMM关于同步的规定:1、线程解锁前,必须把共享变量的值刷新回主内存。2、线程加锁前,必须读取主内存的最新值倒自己的工作内存。3、加锁解锁是同一把锁。JMM交互流程:由于JVM运行程序的实体是线程,而每个线程创建时JVM都会为其创建一个工作内存(有些地方称为栈空间),原创 2022-05-14 11:49:24 · 215 阅读 · 0 评论 -
谈谈对公平锁、非公平锁、可重入锁、递归锁、自旋锁 的理解。
这里写自定义目录标题一、公平锁和公平锁的比较1、什么是公平锁和非公平锁?2、公平锁和非公平锁区别3、公平锁和非公平锁的使用二、可重入锁(又叫递归锁)1、什么是重入锁?2、可重入锁的使用:3、可重入锁的作用:4、可重入锁代码演示:三、自旋锁1、什么是自旋锁?2、自旋锁的优缺点3、自旋锁底层代码一、公平锁和公平锁的比较1、什么是公平锁和非公平锁?a、什么是公平锁:是指多个线程按照申请锁的顺序来获取锁,类似于 队列的先进先出。b、什么是非公平锁:是指在多线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请原创 2021-03-09 10:07:10 · 290 阅读 · 0 评论 -
CAS(比较与交换)底层原理讲解
文章目录一、什么是CAS?二、CAS底层原理三、CAS的缺点一、什么是CAS?二、CAS底层原理三、CAS的缺点原创 2021-03-08 10:02:39 · 730 阅读 · 0 评论 -
Java内存模型(JMM) 和 volatile 的讲解
文章目录一、JMM讲解1、什么是JMM?2、JMM的底层访问过程图:3、JMM的三大特点:二、volatile 讲解1、什么是volatile?2、volatile 的特点2.1、代码案例演示:3、volatile 的示例一、JMM讲解1、什么是JMM?1.1、JMM的简介:JMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念 并不真实存在,它描述的是一组规则或规范通过规范定制了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。1.2、原创 2021-03-05 12:15:16 · 1474 阅读 · 9 评论 -
Java集合类不安全问题之HashMap
一、集合类不安全问题之HashMap1、HashMap不安全Demo展示:package com;import java.util.*;public class ListNoSafeDemo { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); for (int i = 1; i <= 100; i++) {原创 2021-02-26 00:59:04 · 107 阅读 · 0 评论 -
Java集合类不安全问题之HashSet
一、集合类不安全问题之HashSet1、 HashSet 不安全Demo展示:package com;import java.util.*;public class ListNoSafeDemo { public static void main(String[] args) { Set<String> set = new HashSet<>(); for (int i = 1; i <= 100; i++) {原创 2021-02-26 00:50:34 · 213 阅读 · 0 评论 -
Java集合类不安全问题之ArrayList
一、集合类不安全问题 之 ArrayList。1、ArrayList 不安全Demo展示:package com;import java.util.ArrayList;import java.util.List;import java.util.UUID;public class ListNoSafeDemo { public static void main(String[] args) { List<String> list = new ArrayLi原创 2021-02-26 00:31:31 · 143 阅读 · 1 评论 -
Java线程池创建和线程池工作原理
一、一般创建线程池的方式主要是以下3种:ExecutorService newFixedThreadPool = Executors.newFixedThreadPool(3);ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();ExecutorService newSingleThreadExecutor = Executors.newSingleThreadExecutor();二、重点讲解:1.Exe原创 2021-02-23 10:18:37 · 423 阅读 · 0 评论 -
Java死锁故障排查
一、什么是死锁?死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。二、产生死锁的主要原因:1.系统资源不足;2.进程运行推进的顺序不合适;3.资源分配不当。三、模拟死锁代码。package com;import java.util.concurrent.TimeUnit;class HoldThread implements原创 2021-02-21 10:21:15 · 386 阅读 · 5 评论 -
使用信号量Semaphore模拟并发抢占多资源
package com;import java.util.concurrent.Semaphore;import java.util.concurrent.TimeUnit;/** * 信号量的主要用途有两个目的,一个是用于多和共享资源的相互排斥使用,另一个用于并发资源数的控制. */public class SemaphoreDemo { public static void main(String[] args) { //模拟3个停车位 Sema原创 2021-02-20 09:37:41 · 196 阅读 · 0 评论