如何写好多线程程序?

2023-02-10 19:47:22 +08:00
 fang23

主要是性能和线程安全
不限于 Java
有没有什么技巧?各位大佬分享一下

2796 次点击
所在节点    Java
11 条回复
kaf
2023-02-10 19:59:11 +08:00
首先明白你为什么需要多线程,能给你带来什么好处,又会给你带来什么风险
zhuangzhuang1988
2023-02-10 20:24:45 +08:00
《 java 并发编程实战》
《 windows 并发编程指南》
这 2 本书看好就好了。
oldshensheep
2023-02-10 21:04:21 +08:00
看看我总结的一些例子,多线程编程中会遇到的问题 https://www.v2ex.com/t/912912
其实我也是看书总结的。
Huelse
2023-02-10 21:17:44 +08:00
个人认为最好的多线程就是不要手动操作线程,如 FP
adoal
2023-02-10 21:19:18 +08:00
大部分程序员写不好多线程程序。
em70
2023-02-10 21:25:43 +08:00
我从来不用多线程,我用多进程,每个进程用随机或者轮询读取数据,然后用脚本控制进程的启动和终止
wangyu17455
2023-02-10 21:25:52 +08:00
如果只是觉得单线程太慢的话用好 parallelstream 就够了。多线程编程不一定非得是 new 好几个锁然后绞尽脑汁思考谁先发生谁后发生,也可以是 B=A.steam().parallel().map(...).map(...)
dobelee
2023-02-10 21:44:33 +08:00
非必要不用就是最好的实践。
ArcherD
2023-02-10 22:15:24 +08:00
opengps
2023-02-11 11:19:04 +08:00
多写就行了,自然会总结出规律,在工业领域,多线程几乎是必须的,最近的项目更是离谱到需要上百个线程,只不过实际开发未必使用完全的 thread ,往往直接用框架提供的 task 方式
lmshl
2023-02-11 20:07:19 +08:00
多线程的最佳实践就是不要用多线程。😏
不要对自己过于自信,认为搞得定多线程,想充分利用多核性能,建议考虑协程和并行流。
比如 kotlin ,suspend 和 flow api ;
比如 scala ,IO Monad 和 Akka stream ;
比如 rust ,async 和 tokio stream ;

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

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

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

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

© 2021 V2EX