Java虚拟机学习笔记(优化及并发)
相关优化手段:内联、常量折叠、公共表达式消除、自动装箱消除、热度代码、逃逸分析、锁消除、栈上分配、标量替换数组边界检查消除 ...volatile变量:每次使用都会回主内存刷值每次赋值都会同步到主内存不会被指令重排序优化特性:原子性 read load assign use store write synchronized(lock unl
相关优化手段:
内联、常量折叠、公共表达式消除、自动装箱消除、
热度代码、逃逸分析、锁消除、栈上分配、标量替换
数组边界检查消除 ...
volatile变量:
每次使用都会回主内存刷值
每次赋值都会同步到主内存
不会被指令重排序优化
特性:
原子性 read load assign use store write synchronized(lock unlock)
可见性 volatile synchronized final
有序性 volatile synchronized
先行发生原则:
1.程序次序规则 同线程
2.管理锁定规则 lock unlock
3.volatile变量规则 不受指令重排序干扰,真是时间上也先行
4.线程启动规则 start()在线程其他动作之前
5.线程终止规则 其他动作及Thread.join()在Threa.isAlive()终止检测之前
6.线程中断规则 interrupt()在Thread.interruted()之前
7.对象终结规则 对象初始化完成先于它的finalize()方法
8.传递性 A先于B,B先于C,那么A先于C
数据:
1.不可变 final Integer String
2.绝对线程安全
3.相对线程安全 Vector HashTable Collections synchronizedCollection
4.线程兼容 绝大多数
5.线程对立 Thread的resume 和 suspend 方法 System.setIn()和System.setOut()
线程安全实现方法
1.互斥同步 synchronized ReentrantLock(等待可中断,公平锁,绑定多条件)
2.非阻塞同步 TestAndSet
3.无同步方案 可重入代码(结果可预测) 线程本地存储(生成消费者 消费者 web TreadLocal)
锁优化
1.自旋锁与自适应自旋 -XX:PreBlockSpin 次数
2.锁消除
3.锁粗化
4.轻量级锁
5.偏向锁 -XX:+UseBiasedLocking
更多推荐
所有评论(0)