JCSprout icon indicating copy to clipboard operation
JCSprout copied to clipboard

如何优雅的使用和理解线程池 .中“线程是稀缺资源,不能频繁的创建。”

Open JeffreyDai opened this issue 5 years ago • 6 comments

“线程是稀缺资源,不能频繁的创建。“ 这样描述是不是有点不严谨啊。不应该是“内存”? 个人见解。

JeffreyDai avatar Apr 03 '19 02:04 JeffreyDai

“线程是稀缺资源,不能频繁的创建。“ 这样描述是不是有点不严谨啊。不应该是“内存”? 个人见解。

java 线程底层是原生线程, 频繁创建的性能影响: 内存分配/释放 + 调度上下文切换

YingshuLu avatar Apr 03 '19 07:04 YingshuLu

“线程是稀缺资源,不能频繁的创建。“ 这样描述是不是有点不严谨啊。不应该是“内存”? 个人见解。

没太懂你的意思?

是想改为内存是稀缺资源,不能频繁的创建?

crossoverJie avatar Apr 04 '19 03:04 crossoverJie

你可以这么理解吧, 线程的创建是消耗资源的, 而线程间的调度需要频繁依赖CPU的切换,Jie大说的不能频繁创建是站在线程池的角度来看的, 如果说创建线程所消耗的资源,在每次使用完后就销毁, 那么下一次使用的时候又得创建,这样造成资源频繁浪费,而且并不是充分利用

JerryFoundation avatar Apr 10 '19 07:04 JerryFoundation

“线程是稀缺资源,不能频繁的创建。“ 这样描述是不是有点不严谨啊。不应该是“内存”? 个人见解。

没太懂你的意思?

是想改为内存是稀缺资源,不能频繁的创建?

是的,内存才是稀缺的,所以要建议不要频繁的去创建线程。

JeffreyDai avatar Apr 10 '19 08:04 JeffreyDai

是的,内存才是稀缺的,所以要建议不要频繁的去创建线程。

内存确实是稀缺资源,但线程的创建不止是消耗内存而已。

如果这么说的话,那是不是在 Java 里每创建一个对象都要谨慎了,这样 JVM 虚拟机岂不是没啥意义了?

crossoverJie avatar Apr 10 '19 09:04 crossoverJie

创建一个线程,会调用系统内核的api,系统还要为线程分配其它相关资源,成本很高,应该避免线程直接频繁的创建和销毁。 Jie大说的是线程池回收再使用,线程可控。

victor3pt avatar May 12 '19 12:05 victor3pt