性能优化——设置线程池大小

前面讲过“线程池的线程数量设置过多会导致线程竞争激烈”吗?今天再补一句,如果线程数量设置过少的话,还会导致系统无法充分利用计算机资源。那么如何设置才不会影响系统性能呢?
 
其实线程池的设置是有方法的,不是凭借简单的估算来决定的。 今天我们就来看看究竟有哪些计算方法可以复用, 线程池中各个参数之间又存在怎样的关系。
 
线程池原理
 
开始优化之前,我们先来看看线程池的实现原理,有助于你更好地理解后面的内容。
 
在 HotSpot VM 的线程模型中,Java 线程被一对一映射为内核线程。Java 在使用线程执行程序时,需要创建一个内核线程;当该 Java 线程被终止时,这个内核线程也会被回收。因此 Java 线程的创建与销毁将会消耗一定的计算机资源,从而增加系统的性能开销。
 
除此之外,大量创建线程同样会给系统带来性能问题,因为内存和 CPU 资源都将被线程抢占,如果处理不当,就会发生内存溢出、CPU 使用率超负荷等问题。
 
为了解决上述两类问题,Java 提供了线程池概念,对于频繁创建线程的业务场景,线程池可以创建固定的线程数量,并且在操作系统底层,轻量级进程将会把这些线程映射到内核。

猜你喜欢

转载自blog.csdn.net/qq_36589864/article/details/108197602