随笔分类 - 

锁——5、atomic类
摘要:Atomic使用了cas机制,避免了volatile修饰的成员变量不是原子性的,count++问题 **一、示例 ** 1、多线程示例 2、添加synchronized同步锁 这段代码不是线程安全的,所以最终的自增结果可能会小于200 如果加上同步锁,代码如下: 加了同步锁之后,count自增的操作 阅读全文

posted @ 2021-09-17 10:53 夜萤火虫和你 阅读(190) 评论(0) 推荐(0)

锁——4、volitail变量锁
摘要:由此展开,大家可以了解下线程内存和堆内存的差别 一、java内存模型 了解volatile关键字之前,先要了解java的内存模型 Java内存模型简称JMM(Java Memory Model),是Java虚拟机所定义的一种抽象规范,用来屏蔽不同硬件和操作系统的内存访问差异,让java程序在各种平台 阅读全文

posted @ 2021-09-17 10:40 夜萤火虫和你 阅读(120) 评论(0) 推荐(0)

锁——3、Reentrantlock
摘要:一、ReenTrantLock是可重入锁 可重入锁的特点 可重入锁又名递归锁,是指在同一个线程在外层方法获取锁的时候,在进入内层方法会自动获取锁。 谁等的时间最长,谁就先获取锁 ReenTrantLock的特点: 1.ReenTrantLock可以指定是公平锁还是非公平锁。而synchronized 阅读全文

posted @ 2021-09-16 10:20 夜萤火虫和你 阅读(218) 评论(0) 推荐(0)

锁——2、synchronized锁
摘要:一、synchronized为什么性能低 1、Java1.6之前效率低:线程阻塞和唤醒的代价较高,用户态到内核态的切换,花费时间 2、JDK 1.6 之后,synchronized 做了性能优化,性能已经与其他显式锁基本没有差距了 二、synchronized的优化 优化即随着锁的竞争进行升级: 从 阅读全文

posted @ 2021-09-16 10:18 夜萤火虫和你 阅读(216) 评论(0) 推荐(0)

锁——1、基础
摘要:1、锁的分类: 轻量级锁中,默认自旋10次 死锁: 1、什么是死锁? 两个或多个线程因相互等待而被永远阻塞(挂起)的情况。 2、死锁的原因 导致死锁的原因有多种。线程分析器可检测到因不正确使用互斥锁而导致的死锁。这种类型的死锁在多线程应用程序中比较常见。 3、以下条件成立时,具有两个或多个线程的进程 阅读全文

posted @ 2021-09-16 10:16 夜萤火虫和你 阅读(48) 评论(0) 推荐(0)

导航