并发编程初理解

1.synchronized 锁

静态方法锁的是.class文件

.class全局唯一

2.wait等待

notify唤醒,但是唤醒的不一定是哪个线程

notifyall唤醒所有

平时使用的锁都是非公平锁

公平锁消耗性能

lock锁要try finally(unlock)

因为finally一定会执行

threadloacl是隔离线程数据保证数据当前线程唯一

3.synchronized 包裹外使用notify或者notifyall或者wait会抛异常

synchronized加锁或者获取锁是无法中断的

也无法公平,如果获取不到就一直等待

lock可以

4.读写锁性能消耗更低

5.锁是有升级的synchronized

对象锁

第一次进入锁对象的时候是不上锁的

检测到就会产生偏向锁

当再次发生线程争抢就升级成自旋锁,自旋升级成重量级锁,自旋跟轻量级锁很类似

锁的wait和notify等都是object的方法是使用锁的对象进行发起

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值