线程池简介

简介: 线程池简介

线程池

线程池(英语:thread pool):一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。 例如,线程数一般取cpu数量+2比较合适,线程数过多会导致额外的线程切换开销。


线程池应用场景


当应用场景为,计算密集型时:为了将每个cpu充分利用起来,线程数量正常是cpu核数+1,还可以看jdk的使用版本,1.8版本中可以使用cpu核数*2。2021年1月18日15:36:54


当应用场景为,io密集型时:做web端开发的时候,涉及到大量的网络传输,不进入持,缓存和与数据库交互也会存在大量io,当发生io时候,线程就会停止,等待io结束,数据准备好,线程才会继续执行,所以当io密集时,可以多创建点线程,让线程等待时候,其他线程执行,更高效的利用cpu效率,


作用


普通线程需要频繁的创建,执行,销毁三步,线程池的作用能大大减少创建和销毁,使线程在执行的时候不调用创建和销毁,提高线程执行效率,合理的设置线程数,复用线程,避免频繁回收和创建,提高系统运行速率和吞吐量。


参数


线程池七大参数分别是corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue、threadFactory、handler


(1)corePoolSize:线程池中常驻核心线程数


(2)maximumPoolSize:线程池能够容纳同时执行的最大线程数


(3)keepAliveTime:多余的空闲线程存活时间


(4)unit:keepAliveTime的时间单位


(5)workQueue:任务队列,被提交但尚未执行的任务


(6)threadFactory:表示生成线程池中的工作线程的线程工厂


(7)handler:拒绝策略,表示当队列满了并且工作线程大于等于线程池的最大线程数(maximumPoolSize)时如何拒绝。


相关文章
|
4月前
|
Java 调度
Java并发基础-线程简介(状态、常用方法)
Java并发基础-线程简介(状态、常用方法)
33 0
|
5月前
|
安全 Java API
Java 8中的Stream API:简介与实用指南深入理解Java并发编程:线程安全与锁优化
【5月更文挑战第29天】本文旨在介绍Java 8中引入的Stream API,这是一种用于处理集合的新方法。我们将探讨Stream API的基本概念,以及如何使用它来简化集合操作,提高代码的可读性和效率。 【5月更文挑战第29天】 在Java并发编程中,线程安全和性能优化是两个核心议题。本文将深入探讨如何通过不同的锁机制和同步策略来保证多线程环境下的数据一致性,同时避免常见的并发问题如死锁和竞态条件。文章还将介绍现代Java虚拟机(JVM)针对锁的优化技术,包括锁粗化、锁消除以及轻量级锁等概念,并指导开发者如何合理选择和使用这些技术以提升应用的性能。
|
5月前
|
消息中间件 Java C++
"Java多线程基础-2:简介虚拟地址空间——保障进程间独立性的机制 "
如何保障进程之间这样的独立性?操作系统采用了“虚拟地址空间”的方式。
33 0
|
5月前
|
存储 Java 调度
Java多线程基础-1:通俗简介操作系统之进程的管理与调度
操作系统是一个复杂的软件,具备许多功能。其中,进程的管理与调度是与我们密切相关的。本文将对操作系统功能中进程管理与调度作出介绍。
54 0
|
数据可视化 算法 数据库
GUI、多线程编程、网络编程简介
GUI 是 Graphical User Interface 的缩写,含义为图形用户界面。它是一种计算机操作界面,通过图形、图标和视觉化元素与用户进行交互。相比于命令行界面(CLI),GUI 提供了更直观、更易用的方式让用户与计算机系统进行交互。
|
5月前
|
Java 程序员 调度
JavaEE 08 线程池简介
JavaEE 08 线程池简介
39 0
|
设计模式 Java 调度
JAVA线程入门简介
JAVA线程入门简介
181 0
【并发多线程】java.util.concurrent简介
【并发多线程】java.util.concurrent简介
88 0
|
调度
Jmeter之线程组设置简介
线程数:组内线程个数,模拟用户的数量。 循环次数:每个线程循环执行取样器的次数;勾选【永远】一直循环执行(慎用)可配合【调度器】使用。 调度器:默认禁用,使用时需要勾选,勾选后,持续时间6,启动延迟时间2:点击启动按钮后,延迟2s后才开始执行取样器,并持续执行6s。
405 0
Jmeter之线程组设置简介
|
存储 Java 调度
Java多线程简介
Java多线程
117 0
Java多线程简介