
之前只是用过 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 PRO 尽可能的深,尽可能的广... |
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 argos 2023-10-20 19:48:59 +08:00 掌握到面试官掌握的程度 |
11 eh 2023-10-23 11:20:19 +08:00 AQS 竞争的资源是什么,阻塞、同步分别是怎么实现的,可重入怎么实现,公平锁和非公平锁区别是什么。这些应该都是比较关注的点。带着问题去看,理解设计的思想和这么设计解决的问题,用自己的话描述出来就可以,keep it simple stupid |