多线程怎么入门?

2023-12-26 14:46:19 +08:00
 looveh

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

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

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

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

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

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

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

https://tanronggui.xyz/t/1003517

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

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

© 2021 V2EX