![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
多线程
高并发之多线程笔记
weixin_43280948
这个作者很懒,什么都没留下…
展开
-
Java高并发下锁的分类介绍
Java中的锁介绍: 公平非公平锁、递归锁、自旋锁、读写锁(互斥锁)公平锁:每个线程在获取锁时会查看此锁维护的等待队列,若为空或者当前线程是等待队列中的第一个,就占有锁,否则就加入等待队列多线程按申请锁的顺序来获取锁,顺序策略(队列先来后到)非公平锁上来就直接尝试占有锁,若尝试失败,则采用公平锁的方式多线程获取锁的顺序并不是按照申请锁的顺序,高并发情况下,可能会造成优先级反转或饥饿现象ReentrantLock默认非公平,synchronized是一种非公平锁反转:并不是按.原创 2020-10-21 09:27:15 · 72 阅读 · 0 评论 -
CAS入门及ABA问题解决
什么是CAS?CAS(CompareAndSwap),比较并交换,是一条CPU并发原语功能:判断内存某个位置的值是否为预期值,如果是则更新值,返回为flase则不更新,这个过程是原子的,底层靠UnSafe类来保证原子性;一般应用:循环判断预期值和主存中值直到相等(更新完成)并发原语体现在Unsafe中的各个方法,调用Unsafe类中的CAS方法,完全依赖于硬件的功能,通过它实现了原子操作原语(操作系统):由若干条指令组成,用于完成某个功能的一个过程,并且执行过程必须连续,不允许被中断,也就是说CA原创 2020-10-20 23:58:36 · 107 阅读 · 0 评论 -
volatile分析(可见性、无原子、禁重排)
volatile是什么volatile:JVM提供的轻量级的同步机制volatile的特点可见性(及时通知其他线程主物理内存的值已经改变)原子性无保证有序性(禁止指令重排)可见性验证public class Main implements Runnable{ volatile boolean f; @Override public void run() { try { Thread.sleep(1000); f=true; } catch (Exception原创 2020-10-19 14:47:46 · 86 阅读 · 0 评论 -
线程安全性保证---JMM特性详解
概述JVM Java虚拟机,运行程序的实体是线程,每个线程创建时JVM都会为其创建 一个工作内存(称作栈空间)JMM Java内存模型,是一种抽象的概念,描述的是一组规范,通过这组规范定义了 程序中各个变量(包括实例字段,静态字段,构成数组对象的元素)的访问方式volatile JVM提供的轻量级的同步机制JMM特性JMM关于同步的规定: 1 > 线程加锁前,必须读取主内存的最新值到自己的工作内存 2 > 线程解锁前,必须把共享变量的值刷新回主内存 3 >原创 2020-10-19 13:25:51 · 215 阅读 · 0 评论