JVM高效并发----线程安全与锁优化

本文介绍了Java中的线程安全和锁优化技术。线程安全分为不可变、绝对线程安全、相对线程安全、线程兼容和线程对立五种类型。锁优化包括自旋锁、自适应自旋、锁消除、锁粗化和轻量级锁、偏向锁等,旨在提高并发性能。详细探讨了各种锁的工作原理及其在JVM中的实现。
摘要由CSDN通过智能技术生成

目录

1. 概述

2. 线程安全

2.1 Java中的线程安全

2.2 线程安全的实现方法

3. 锁优化

3.1 自旋锁与自适应自旋

3.2 锁消除

3.3 锁粗化

3.4 轻量级锁

3.5 偏向锁

参考:


1. 概述

如何实现并发的正确性,如何实现高效性

2. 线程安全

2.1 Java中的线程安全

按照安全程度由强到弱:

  • 不可变

不可变的对象一定线程安全。

例如:String、枚举类型、java.lang.Number 的部分之类等

  • 绝对线程安全

达到“不管运行时环境如何,调用者带哦用不需要任何额外的同步操作”。

达到上述要求需要的代价很大甚至不切实际。

  • 相对线程安全

我们通常意义上所讲的线程安全。,需要保证这个多项单独的线程操作是安全的,我们在调用是不要用做额外的保障措施。

Vector、HashTable等

  • 线程兼容

本身不是线程安全的,通过在调用段正确使用同步手段来保证对象在不能够发环境中能够安全使用。

通常所说的线程不安全

  • 线程对立

无论调用段采取怎样的同步措施,都无法在多线程环境下并发使用的代码。

如Thread 类的suspend() 和resume()

2.2 线程安全的实现方法

  • 互斥同步(阻塞同步)

互斥是方法,同步是牧师

synchronized 关键字:

<> 编译后在同步快前后分别形成monitorenter 和monitorexit这两个字节码指令,每一个都需要一个reference 类型的参数来表明要锁定和解锁的对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值