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