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