多线程怎么入门?

276 天前
 looveh

我是一个培训机构出来的 Java 开发,第一学历高中。不怕大家笑话,工作 6 ,,7 年了感觉自己对多线程还是似懂非懂的状态。有没有大佬能教一下多线程应该怎么入门啊?什么时候该用多线程提升性能?什么情况下该用锁?什么情况下不需要用锁?我心里一点没底。

3701 次点击
所在节点    程序员
37 条回复
emSaVya
276 天前
java 可以看看 Java Concurrency in Practice
laaaaaa
276 天前
看看 Netty 吧,先看它解决什么问题,在模拟场景去实战
murmur
276 天前
写点什么秒杀、支付、库存之类的就明白了,虽然秒杀也写烂了但是大并发秒杀+库存还是很考验人的

其实现在的大公司也不会写严格的锁,性能太差了,超售直接砍单就完了,pdd 那么砍单不一堆人还是吹
jonasjiang23
276 天前
主要是你没什么应用场景,所以不知道怎么入门;
多去 b 站找到培训视频看看吧,这样以后面试也懂一点
mawerss1
276 天前
找个操作系统的课看看
jonasjiang23
276 天前
光是看 Java Concurrency 并发编程,你看了三个章节,可能还是有点迷糊,到底什么业务场景要用并发;
looveh
276 天前
@jonasjiang23 说的挺对,就是没有业务场景。不知道怎么实现
looveh
276 天前
@mawerss1 要到这么底层么
looveh
276 天前
@emSaVya 有电子书么
heiya
276 天前
我的建议是从操作系统共享变量、锁那块看起,理解之后看《 Java 并发编程实践》
NewYear
276 天前
楼上说的秒杀的场景,其实可以顺序入库,但是不直接返回数据,过几秒显示结果,确定每个用户下单的顺序,然后删掉额外的就可以了,也不会影响用户体验。

电商的库存这块不是很好弄,但是看需求吧,例如说是以下单为准,还是要以付款为准,付款的时间限制又是什么。
looveh
276 天前
@heiya 操作系统听着就感觉好大好难的样子😰
nice2cu
276 天前
公司数据量大、业务稍微复杂点的话,多线程还是很常见的呀
sjtulyj
276 天前
rust 中的多线程根本就不需要学
looveh
276 天前
@nice2cu 没碰到过😂之前做企业福利,也是类似电商都没碰到过
chenqh
276 天前
@murmur 难道不是超售就超售吗?双 11 哪个商店敢拒绝阿里的超售需求呢
kingwrcy
276 天前
业务场景自己随便造一个不就有了?
比如某接口是个聚合统计接口,依赖外部 10 个接口的数据。
现在需要你并发 10 个线程异步获取外部 10 个接口的数据。
拿到全部的 10 个结果后,对结果做加工,入库。

如果你单线程,那就耗时很久,如果多线程,如何控制 10 个线程全部结束再执行你的后续代码。
这个就是一个非常基础的多线程场景。

再比如跑批任务,每天需要对 100 万数据进行清洗,单线程清洗,可能一天都跑不完,需要多线程跑。
那问题来了,如果让每个线程只负责其中一部分数据,涉及到数的分而治之,并且全部清洗完完成后还要执行后续逻辑。
这也是个非常基础的多线程场景。
guo4224
276 天前
买本 apue 翻翻
wniming
276 天前
wangkun025
276 天前
握手啊。
我也不懂。

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

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

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

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

© 2021 V2EX