四种锁切换、并发总结

final常亮,读取对象与读取值,不能重排序

sychronized会将代码块中的变量刷新到内存里面

sychronized底层是用Monitor

对象头是对象的hashCode和对象的分代年龄

无所,偏向锁,轻量锁,重量锁

挂起。自旋。

挂起有上下文操作,

自旋没有切换耗cpu,自旋最大时间,最大次数

自旋锁,获取锁的一种方式

sychronized同步块四种锁升级机制优化:

1、如果之后一个线程的时候,只是使用了偏向锁,将锁的标志位改为00, 这种情况下没有任何上下文切换,,当发现有线程竞争时候将锁的标志位改为01,这时候成为了轻量级锁,轻量级锁其实也是无锁化的,用的cas机制,当cas等待的线程自旋到一定时间后仍然没有获取锁,将会升级成为重量级锁,线程直接等待,不再自旋,调用的操作系统的monitor Mutex Lock互斥锁来实现锁机制

 

 

这些优化提升应用程序的性能

 

AotumicLong

LongAdder优化了AotumicLong,分散热点,但是只能保证最终一致性,

 

读写锁StampLock

读:写 1000:1,写锁可能饿死

此锁可以不阻塞写,读锁按照读取版本号的问题来读取,版本号一致才能读取,doun li在类里面写了例子,也可以按照阻塞写来

 

completeableFuture用法

流式处理

 

高性能队列:

 

lamada表达式

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章