我是一个培训机构出来的 Java 开发,第一学历高中。不怕大家笑话,工作 6 ,,7 年了感觉自己对多线程还是似懂非懂的状态。有没有大佬能教一下多线程应该怎么入门啊?什么时候该用多线程提升性能?什么情况下该用锁?什么情况下不需要用锁?我心里一点没底。
1
emSaVya 2023-12-26 14:50:14 +08:00
java 可以看看 Java Concurrency in Practice
|
2
laaaaaa 2023-12-26 15:01:14 +08:00
看看 Netty 吧,先看它解决什么问题,在模拟场景去实战
|
3
murmur 2023-12-26 15:03:22 +08:00 2
写点什么秒杀、支付、库存之类的就明白了,虽然秒杀也写烂了但是大并发秒杀+库存还是很考验人的
其实现在的大公司也不会写严格的锁,性能太差了,超售直接砍单就完了,pdd 那么砍单不一堆人还是吹 |
4
jonasjiang23 2023-12-26 15:05:14 +08:00
主要是你没什么应用场景,所以不知道怎么入门;
多去 b 站找到培训视频看看吧,这样以后面试也懂一点 |
5
mawerss1 2023-12-26 15:05:57 +08:00
找个操作系统的课看看
|
6
jonasjiang23 2023-12-26 15:06:30 +08:00
光是看 Java Concurrency 并发编程,你看了三个章节,可能还是有点迷糊,到底什么业务场景要用并发;
|
7
looveh OP @jonasjiang23 说的挺对,就是没有业务场景。不知道怎么实现
|
10
heiya 2023-12-26 17:43:31 +08:00
我的建议是从操作系统共享变量、锁那块看起,理解之后看《 Java 并发编程实践》
|
11
NewYear 2023-12-26 17:45:14 +08:00
楼上说的秒杀的场景,其实可以顺序入库,但是不直接返回数据,过几秒显示结果,确定每个用户下单的顺序,然后删掉额外的就可以了,也不会影响用户体验。
电商的库存这块不是很好弄,但是看需求吧,例如说是以下单为准,还是要以付款为准,付款的时间限制又是什么。 |
13
nice2cu 2023-12-26 19:50:30 +08:00
公司数据量大、业务稍微复杂点的话,多线程还是很常见的呀
|
14
sjtulyj 2023-12-26 19:56:50 +08:00
rust 中的多线程根本就不需要学
|
17
kingwrcy 2023-12-26 20:08:45 +08:00
业务场景自己随便造一个不就有了?
比如某接口是个聚合统计接口,依赖外部 10 个接口的数据。 现在需要你并发 10 个线程异步获取外部 10 个接口的数据。 拿到全部的 10 个结果后,对结果做加工,入库。 如果你单线程,那就耗时很久,如果多线程,如何控制 10 个线程全部结束再执行你的后续代码。 这个就是一个非常基础的多线程场景。 再比如跑批任务,每天需要对 100 万数据进行清洗,单线程清洗,可能一天都跑不完,需要多线程跑。 那问题来了,如果让每个线程只负责其中一部分数据,涉及到数的分而治之,并且全部清洗完完成后还要执行后续逻辑。 这也是个非常基础的多线程场景。 |
18
guo4224 2023-12-26 20:09:38 +08:00 via iPhone
买本 apue 翻翻
|
19
wniming 2023-12-26 20:19:37 +08:00
|
20
wangkun025 2023-12-26 20:22:35 +08:00
握手啊。
我也不懂。 |
21
zapper 2023-12-26 20:23:59 +08:00 1
多线程你不一定要用 java 啊。找个什么 python 多线程跑个下载任务或者爬虫玩玩。一上来就锁来锁去的反而更不明白了
|
24
siweipancc 2023-12-26 22:19:23 +08:00 via iPhone
写个玩具,爬 e 站的本子
1. 要求打满带宽 2. 输出统计数据到文档 3. 实时显示任务完成占比 |
25
wlm201219 2023-12-26 22:28:21 +08:00
@siweipancc 放过 e 站吧,换个没良心的网站练手
|
26
kneo 2023-12-26 22:28:46 +08:00 via Android
一个多线程有什么学不明白的?随便入门书或者教程读一遍抄一遍代码不就完了?我看你就是懒。
|
28
shawnsh 2023-12-26 22:31:05 +08:00 via Android
跟培训和学历有个锤子关系,想学基本概念就看操作系统。想速成就搜索相关的书籍。
|
29
cyanray 2023-12-27 04:43:37 +08:00 1
《操作系统导论》作者: [美] Remzi H. Arpaci-Dusseau / [美] Andrea C. Arpaci-Dusseau 出版社: 人民邮电出版社
这本书写的很好,也没有翻译腔。不推荐看别人的项目说明、博客笔记来学习这些比较基础的东西,会错过很多细节。 |
30
lyxxxh2 2023-12-27 09:36:22 +08:00
你只是要用多线程 问 gpt 直接用
别看什么底层书籍 |
31
8355 2023-12-27 10:06:48 +08:00
1.你需要实现一个中台接口,并行调用内部和外部多和接口并将接口返回值进行拼接返回。理论上要求你接口的响应时间略高于响应时间最长接口的时间。
2.前台有一个接口接收第三方的回调数据存入数据表,你需要在后台脚本尽可能的实时扫表处理每条数据,要求是不能重复处理,需要准实时处理。 3.大批量发送站内信/app push/短信/邮件 4.excel 导入大表,高效清洗组装数据入库 5.电商系统风控模型,需要根据用户行为/下单/登陆/历史订单/地址/支付等多种信息判断该订单是否需要风控拦截。 |
32
heiya 2023-12-27 10:08:11 +08:00
@looveh 学起来不难,市面上有关的书籍很多,知识都比较固定,这也是必须要学的。学完之后对理解多线程很有帮助。然后在这个基础上学《 Java 并发编程实践》。
|