300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Java并发编程艺术----读书笔记(二)

Java并发编程艺术----读书笔记(二)

时间:2023-08-11 01:05:01

相关推荐

Java并发编程艺术----读书笔记(二)

版权声明:本文为博主原创文章,未经博主允许。 /a724888/article/details/64214595 

java并发编程艺术2

java并发机制的底层实现。

java-》编译——》。class字节码-》字节码加载到JVM-》字节码转化为汇编让cpu执行。

1volatile:

2volatile的定义

3volatile追加字节提高效率。

64字节行宽,当不足64字节是不同节点出现在统一缓存行,会出现相互加锁的情况。

2synchronized:

1、轻量级锁:轻量级锁不使用互斥量来进行加锁。它是在没有多线程竞争的情况下,减少重量级锁使用互斥量的方式加锁的开销。

对象头主要用来存储对象自身的运行数据。

1JVM在线程运行同步块之前创建栈帧用于存储锁记录的空间。

2将(所需访问的对象的)对象头中的markword复制到锁记录中。

3线程使用cas操作将markword替换成指向锁的指针,成功即加锁,失败则自旋。

2、偏向锁:

1锁不存在竞争并且由单一线程多次获得时使用偏向锁。

2锁记录中记录偏向锁的线程id,此后不需要cas操作来加锁或解锁。只需测试markword里是否存储偏向锁。

3测试成功则已获得锁,否则测试一下偏向锁标识,如果没有设置则使用cas竞争,如果设置了就用cas将偏向锁指向当前线程。

3自旋锁

1线程阻塞需要挂起线程和恢复线程,需要切换到内核态完成。

2有时候共享数据的锁定只会持续很短的时间,为其去挂起和恢复不值得。

3如果多线程并发访问同一对象,可以不对另一线程挂起,而是让它自旋(忙循环)。

对比:

4、原子操作

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。