![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
并发编程
文章平均质量分 91
Java并发编程,以实战为线索,一起找病发!
程序员阿红
博客纯属记录自己的学习过程,如果能帮上你实属荣幸,可以的话,留个关注,比心。
展开
-
Java内存模型
📝 个人主页:程序员阿红🔥🎉 支持我:点赞👍收藏⭐️留言📝1. Java内存模型Java 内存模型中规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存,线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存中的变量。这里的工作内存是 JMM 的一个抽象概念,也叫本地内存,其存储了该线程以读/写共享变量的副本。就像每个处理器内核拥有私有的高速缓存,JMM 中每个线程拥有私有的本地内存。不同线程之间无法直接访问对方工作内存中的变量,线程间的通信一般有两种方式进行,一是通过消息传递,原创 2022-05-31 08:46:38 · 1633 阅读 · 1 评论 -
Java 并发编程中篇 -(JMM、CAS 原理、Volatile 原理)
四、共享模型之内存1、Java 内存模型(JMM) JMM 即 Java Memory Model,它定义了主存(共享内存)、工作内存(线程私有)抽象概念,底层对应着 CPU 寄存器、缓存、硬件内存、 CPU 指令优化等。 JMM 体现在以下几个方面 原子性 - 保证指令不会受到线程上下文切换的影响可见性 - 保证指令不会受 cpu 缓存的影响有序性 - 保证指令不会受 cpu 指令并行优化的影响 2、可见性 1)退不出的循环 首先看一段代码: public static boolean ru转载 2022-05-23 20:29:13 · 211 阅读 · 0 评论 -
死锁的排除
死锁的排除📝 个人主页:程序员阿红🔥🎉 支持我:点赞👍收藏⭐️留言📝✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨死锁在我们多并发编程是很容易发生的事件,但是我们一般怎么进行死锁的排查呢,且听阿红班门弄斧一下。在这里我先模拟一个程序:创建两个对象A,B。在给对象A上锁的同时,想要获取对象B的资源,但是给对象A上锁的同时,对象B也被上锁了,所以造成了死锁。package com.example.deathlock;import org.slf4j.Logger;import org原创 2022-05-21 14:39:41 · 335 阅读 · 0 评论 -
深入synchronized底层原理
📝 个人主页:程序员阿红🔥🎉 支持我:点赞👍收藏⭐️留言📝📣 推荐文章:SSM整合🔥🍗1. 引言记得开始学习Java的时候,一遇到多线程情况就使用synchronized,相对于当时的我们来说synchronized是这么的神奇而又强大,那个时候我们赋予它一个名字“同步”,也成为了我们解决多线程情况的百试不爽的良药。😈😈😈synchronized俗称:对象锁,专门用来锁对象的(这里不用过多关心对象的问题,反正你也不会有的😅)。😺😺😺synchronized采用互斥的方式来保证同一时刻至多只有原创 2022-05-04 20:50:45 · 1500 阅读 · 2 评论 -
JUC必知必会(一):线程和进程
1 进程 1.1 进程的概念 进程就是正在运行的程序,它会占用对应的内存区域,由CPU进行执行与计算。 1.2 进程的特点 独立性 进程是系统中独立存在的实体,它可以拥有自己独立的资源,每个进程都拥有自己私有的地址空间,在没有经过进程本身允许的情况下,一个用户进程不可以直接访问其他进程的地址空间动态性 进程与程序的区别在于,程序只是一个静态的指令集合,而进程是一个正在系统中活动的指令集合,程序加入了时间的概念以后,称为进程,具有自己的生命周期和各种不同的状态,这些概念都是程序所不具备的.并发性 多个原创 2022-04-26 14:45:52 · 630 阅读 · 1 评论 -
多线程学习记录
1.1 基本概念1.1.1 程序和进程的概念程序 - 数据结构 + 算法,主要指存放在硬盘上的可执行文件。进程 - 主要指运行在内存中的可执行文件。目前主流的操作系统都支持多进程,为了让操作系统同时可以执行多个任务,但进程是重量级的, 也就是新建一个进程会消耗CPU和内存空间等系统资源,因此进程的数量比较局限。1.1.2 线程的概念为了解决上述问题就提出线程的概念,线程就是进程内部的程序流,也就是说操作系统内部支持多 进程的,而每个进程的内部又是支持多线程的,线程是轻量的,新建线程会共享所在进程原创 2021-11-09 10:29:38 · 111 阅读 · 0 评论