JUC 相关的知识到底学到什么程度面试才 OK?

2023-10-20 13:50:45 +08:00
 chenfang

之前只是用过 Atomic 一些类以及 ConcurrentHashMap,知道多线程下如何使用这些类以及可以实现什么功能

前段时间面了两家,问了个问题让我简单讲一下 AQS,当时很紧张,只回答了 AQS 是实现锁以及一些并发工具的底层,CAS 保证线程安全

回头看了看(美团的 AQS 文章)[https://tech.meituan.com/2019/12/05/aqs-theory-and-apply.html],我了解了 AQS 里边有一个双端队列,用于存放等待的线程

但是再往细了看源码,有写 if 里边的判断,逻辑相当复杂,此时不禁想了这个问题,难道过一遍相应的方法,知道这个方法大概做了什么就可以了? 或者说应该如何学习源码?

2076 次点击
所在节点    Java
11 条回复
chuck1in
2023-10-20 14:23:51 +08:00
还是转前端吧,简单点。
chenfang
2023-10-20 15:04:18 +08:00
@chuck1in ........
mightybruce
2023-10-20 15:15:16 +08:00
建议转前端, 后端其他语言并发实现都是这么复杂的,况且你面的是卷王 JAVA 。
dqzcwxb
2023-10-20 15:19:37 +08:00
AtomicLong 和 LongAdder 深入了解以及能区分各自特性我觉得就够了
sumarker
2023-10-20 15:20:55 +08:00
尽可能的深,尽可能的广...
kd9yYw2RyhQwAwzn
2023-10-20 15:23:43 +08:00
我觉得 AQS tryAcquire tryRelease 那几个 protected 方法 在 guc 实现类是怎么用的 然后 Concurrent* CopyOnWrite*类之间的差异 原子类大概的原理看看就行
kd9yYw2RyhQwAwzn
2023-10-20 15:24:25 +08:00
也没必要太深 为面试准备的话 突击效果可能会更好吧
notwaste
2023-10-20 15:26:15 +08:00
简历上没写的内容大概回答一下 尽量往自己擅长的方面引导面试官,要是掌握的不够深又往简历写那还不如不写
Alexone1
2023-10-20 16:38:46 +08:00
能说个所以然就 ok 、有兴趣可以深入自己实现一个
tianshuang
2023-10-20 19:48:59 +08:00
掌握到面试官掌握的程度
eh
2023-10-23 11:20:19 +08:00
AQS 竞争的资源是什么,阻塞、同步分别是怎么实现的,可重入怎么实现,公平锁和非公平锁区别是什么。这些应该都是比较关注的点。带着问题去看,理解设计的思想和这么设计解决的问题,用自己的话描述出来就可以,keep it simple stupid

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/983791

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX