之前只是用过 Atomic 一些类以及 ConcurrentHashMap,知道多线程下如何使用这些类以及可以实现什么功能
前段时间面了两家,问了个问题让我简单讲一下 AQS,当时很紧张,只回答了 AQS 是实现锁以及一些并发工具的底层,CAS 保证线程安全
回头看了看(美团的 AQS 文章)[https://tech.meituan.com/2019/12/05/aqs-theory-and-apply.html],我了解了 AQS 里边有一个双端队列,用于存放等待的线程
但是再往细了看源码,有写 if 里边的判断,逻辑相当复杂,此时不禁想了这个问题,难道过一遍相应的方法,知道这个方法大概做了什么就可以了? 或者说应该如何学习源码?
1
chuck1in 2023-10-20 14:23:51 +08:00
还是转前端吧,简单点。
|
3
mightybruce 2023-10-20 15:15:16 +08:00
建议转前端, 后端其他语言并发实现都是这么复杂的,况且你面的是卷王 JAVA 。
|
4
dqzcwxb 2023-10-20 15:19:37 +08:00
AtomicLong 和 LongAdder 深入了解以及能区分各自特性我觉得就够了
|
5
sumarker 2023-10-20 15:20:55 +08:00
尽可能的深,尽可能的广...
|
6
kd9yYw2RyhQwAwzn 2023-10-20 15:23:43 +08:00
我觉得 AQS tryAcquire tryRelease 那几个 protected 方法 在 guc 实现类是怎么用的 然后 Concurrent* CopyOnWrite*类之间的差异 原子类大概的原理看看就行
|
7
kd9yYw2RyhQwAwzn 2023-10-20 15:24:25 +08:00
也没必要太深 为面试准备的话 突击效果可能会更好吧
|
8
notwaste 2023-10-20 15:26:15 +08:00
简历上没写的内容大概回答一下 尽量往自己擅长的方面引导面试官,要是掌握的不够深又往简历写那还不如不写
|
9
Alexone1 2023-10-20 16:38:46 +08:00
能说个所以然就 ok 、有兴趣可以深入自己实现一个
|
10
tianshuang 2023-10-20 19:48:59 +08:00 1
掌握到面试官掌握的程度
|
11
eh 2023-10-23 11:20:19 +08:00
AQS 竞争的资源是什么,阻塞、同步分别是怎么实现的,可重入怎么实现,公平锁和非公平锁区别是什么。这些应该都是比较关注的点。带着问题去看,理解设计的思想和这么设计解决的问题,用自己的话描述出来就可以,keep it simple stupid
|