JVM内置锁有哪些?

一.自旋锁:

 在JDK1.6之前,在多处理器上,两个线程并行执行访问同一个对象锁时,其中一个线程持有了对象锁之后,另一个线程不会被挂起,而是继续占用CPU资源进行一定次数的轮询等待获取锁,超过次数则被挂起,默认是10次,可以通过参数-XX PreBlockSpin更改.

 在JDK1.6之后,自旋的时间不在固定,而是由前一次在同一个锁上的自旋时间以及锁的拥有者的状态来决定,也就是在同一个锁对象上,自旋等待刚刚成功了并且锁的拥有者的线程正在运行,那么虚拟机就会认为此次自旋也很有可能成功,换句话说,如果前面锁对象的拥有者自旋都没有成功,那么现在也不会去进行自旋等待获取锁了.这是一种自适应自旋锁.

 目的:减少挂起线程和恢复线程之间的用户态到内核态之间的转换所带来的性能影响.

 操作参数:-XX:+UseSpinning,JDK1.6之后是默认开启

二.锁消

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值