Java并发编程
文章平均质量分 76
Java并发编程
FREE_GIFT_白给怪
这个作者很懒,什么都没留下…
展开
-
并发编程API解析与对比
文章目录需要在synchronized中使用——wait()和notify()wait()与sleep()【不需要前提条件就可以使用】的区别需要Lock才能使用——await()与signal()不需要前提条件就可以使用——park()与unpark()线程运行状态图解interrupt() 需要在synchronized中使用——wait()和notify() java中当调用一个锁对象的wait或notify方法时,如当前锁的状态是偏向锁或轻量级锁则会先膨胀成重量级锁。 JDK在Object对象中提供原创 2022-05-10 15:00:44 · 423 阅读 · 1 评论 -
线程池源码解析
ThreadPoolExecutor.execute() public void execute(Runnable command) { //如果任务等于null就抛出异常 if (command == null) throw new NullPointerException(); //获取ctl线程池状态跟活跃线程数 int c = ctl.get(); //比对活跃线程数跟核心线程数的大小原创 2022-03-25 10:42:02 · 541 阅读 · 0 评论 -
volatile原理
文章目录原理可见性有序性存在的问题双重锁单例模式并发编程中的三个概念1. 原子性2.有序性3.可见性synchronized 关键字和 volatile 关键字的区别 原理 可见性 有序性 存在的问题 只能保证本线程之内的代码不重排 双重锁单例模式 存在的问题: 可能t1线程在 new对象的时候发生了指令重排序,先给实例赋值之后再创建的 如果2和3进行了重排序的话,线程B进行判断if(instance==null)时就会为true,而实际上这个instance并没有初始化成功,显而易见对原创 2022-03-20 11:07:20 · 275 阅读 · 0 评论 -
AQS原理解析+ReenTrantLock实现原理
文章目录概述ReentrantLock原理非公平锁实现原理 概述 Monitor是C++实现的,AQS纯java实现的 简单的不可重入锁的实现: 测试: ReentrantLock原理 非公平锁实现原理原创 2022-03-19 11:01:42 · 349 阅读 · 0 评论 -
ConcurrentHashMap简介
文章目录为什么要用ConcurrentHashMapConcurrentHashMap的构成ConcurrentHashMap并发读写情形1.不同Segment的并发写入2.同一Segment的一写一读3.同一Segment的并发写入ConcurrentHashMap的优势Put()方法与Get()方法解析size()方法解析 为什么要用ConcurrentHashMap HashMap是线程不安全的,JDK1.7并发操作可能会出现死链,JDK1.8可能会丢失数据。 避免HashMap的线程安全问题有很多办原创 2022-03-16 14:21:46 · 1690 阅读 · 0 评论 -
CAS原理
CAS指令在Intel CPU上称为CMPXCHG指令,它的作用是将指定内存地址的内容与所给的某个值相比,如果相等,则将其内容替换为指令中提供的新值,如果不相等,则更新失败。这一比较并交换的操作是原子的,不可以被中断。初一看,CAS也包含了读取、比较 (这也是种操作)和写入这三个操作,和之前的i++并没有太大区别,是的,的确在操作上没有区别,但CAS是通过硬件命令保证了原子性,而i++没有,且硬件级别的原子性比i++这样高级语言的软件级别的运行速度要快地多。 从内存领域来说这是乐观锁,因为它在对共享变量更新原创 2022-03-16 07:31:13 · 396 阅读 · 0 评论 -
ThreadLocal原理与内存泄露的原因
set源码 get 源码 https://blog.csdn.net/CPrimer0/article/details/115252789?spm=1001.2014.3001.5501 https://zhuanlan.zhihu.com/p/158033837 https://blog.csdn.net/qq_43578385/article/details/111879678转载 2022-03-03 11:16:38 · 195 阅读 · 0 评论 -
ReenTrantLock可重入锁和synchronized的区别
ReenTrantLock可重入锁(和synchronized的区别)总结 可重入性: 从名字上理解,ReenTrantLock的字面意思就是再进入的锁,其实synchronized关键字所使用的锁也是可重入的,两者关于这个的区别不大。两者都是同一个线程没进入一次,锁的计数器都自增1,所以要等到锁的计数器下降为0时才能释放锁。 锁的实现: Synchronized是依赖于JVM实现的,而ReenTrantLock是JDK实现的,有什么区别,说白了就类似于操作系统来控制实现和用户自己敲代码实现的区别。前者的实原创 2021-03-07 21:49:04 · 473 阅读 · 1 评论 -
synchronized关键字的一些自我理解+JUCAPI的理解
文章目录synchronized 关键字最主要的三种使用方式:1.修饰实例方法2.修饰静态方法3.修饰代码块synchronized锁升级:偏向锁 → 轻量级锁 → 重量级锁(锁膨胀)批量重偏向,批量撤销(wait)和(notify)锁消除 lock eliminate锁粗化 lock coarsening synchronized 关键字最主要的三种使用方式: 1.修饰实例方法 作用于当前对象实例加锁,进入同步代码前要获得 当前对象实例的锁 同一个类里的两个synchronized 方法,在单例模式或者同原创 2021-01-20 15:13:59 · 471 阅读 · 1 评论 -
读写锁(ReadWriteLock)的简单使用以及原理
文章目录原创 2021-12-22 07:41:09 · 184 阅读 · 0 评论