互联网大厂高频重点面试题2

AtomicInteger

  1. ABA:狸猫换太子
  2. 解决:理解院子引用+新增机制(版本号,类似时间戳)

  1. 公平锁和非公平锁 - 并发包中的 ReentrantLock
    1. 指定构造函数的boolean获得,默认非公平锁
    2. 公平:多线程按申请所得顺序获取锁,先来后到
    3. 非公平:多线程获取所得顺序不按照申请顺序,可能后申请的线程比先申请的线程游戏拿货去锁,如果尝试失败,再采用公平锁方式。高并发时,可能造成优先级翻转或饥饿线象。吞吐量比公平锁大。
    4. synchronized 是非公平锁
  2. 可重入锁(递归锁)

code interview.thread.ReentrantLockDemo

1. 概念:同一线程外层函数获得锁之后,内层递归函数仍然能获取该所的代码。同一线程在外层方法获取锁后,进入内层方会自动获取锁。即,线程可进入任何一个他已经拥有的锁所同步者的代码块。
2. ReentrantLock/Synchronized 是可重入锁
3. 作用:避免死锁
  1. 自旋锁

code interview.thread.SpinLockDemo

1. 基于:unsafe类 + CAS(compare and set)
2. 概念:尝试获取锁的线程不会阻塞,采用循环方式获取锁,好处是减少线程上下文切换的消耗,缺点是循环会消耗CPU
  1. etc

code interview.thread.ReadWriteLockDemo

1. 独占锁:该锁一次只能被一个线程持有。ReentrantLock、Synchronized都是独占锁。
2. 共享锁:该锁可被锁个线程持有。
3. ReentrantReadWriteLock:读是共享锁,写是独占锁。该锁的共享锁保证并发读是高效的,读读可共存,读写、写读、写写过程互斥。

转载于:https://my.oschina.net/beborn/blog/3054585

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值