并发编程
2022-09-18 20:13:16 14 举报
并发编程
作者其他创作
大纲/内容
互斥锁
Synchronized是内置锁,隐式锁.
JDK1.6之前性能比较低->Java对象->Monitor缓存->OS->互斥量(重量级锁)->依赖于操作系统线程Pthread库.JVM运行在用户态,调用操作系统需要切换用户状态,很消耗资源,
JDK1.6之后 重写->Java对象->对象锁(偏向锁1个线程)->对象锁(轻量级锁存在多个线程但是竞争不激烈,多个现在在没拿到锁之前处于自旋状态,不需要占用CPU资源)->互斥量(重量级锁)->依赖于操作系统线程Pthread库.JVM运行在用户态,调用操作系统需要切换用户状态,很消耗资源.
Synchronized用法
加在静态方法上面修饰的是这个方法
加在非静态方法上面,谁new这个对象就是谁,相当于this
代码块
System.out.println()是Synchronized(this)如果项目中有很多这个,会导致QPS上不去
RentrantLock是显式锁.
Dog li ->AQS->ReentrntLock
可重入
公平性
如图
volatile详解
指令重排表,相对位置
用内存屏障解决指令重排
同步代码块解决指令重排
Synchronized(Object){}
可以解决可见性,但是不能解决原子性
数据同步的8大原子操作
0 条评论
下一页