首页 > 其他分享 >线程池的线程数应该怎么配置?有哪几种常见的线程池?

线程池的线程数应该怎么配置?有哪几种常见的线程池?

时间:2023-10-28 19:31:59浏览次数:22  
标签:线程 Java 常见 密集型 IO 哪几种 CPU

一、线程池的线程数应该怎么配置?

线程在Java中属于稀缺资源,线程池不是越大越好也不是越小越好。任务分为计算密集型、IO密集型、混合型。

1. 计算密集型:大部分都在用CPU跟内存,加密,逻辑操作业务处理等。

2. IO密集型:数据库链接,网络通讯传输等。

一般的经验,不同类型线程池的参数配置:

1、计算密集型一般推荐线程池不要过大,一般是CPU数+1,+1是因为可能存在页缺失(就是可能存在有些数据在硬盘中需要多来一个线程将数据读入内存)。如果线程池数太大,可能会频繁进行上下文切换和任务调度。

获得当前CPU核心数代码如下:

Runtime.getRuntime().availableProcessors()1 ;

2、IO密集型:线程数适当大一些,机器核心CPU数量*2;

3、混合型:可以考虑根据情况将它拆分成CPU密集型和IO密集型任务,如果执行时间相差不大,拆分可以提升吞吐量,反之没有必要。

二、有哪几种常见的线程池?

常见的线程池主要有4种,都是通过工具类Excutors创建出来的,需要注意,阿里巴巴的《Java开发手册》里禁止使用这种方式来创建线程池。

线程池的线程数应该怎么配置?有哪几种常见的线程池?_线程池


标签:线程,Java,常见,密集型,IO,哪几种,CPU
From: https://blog.51cto.com/u_16269508/8072690

相关文章

  • rust 创建多线程web server
    创建一个httpserver,处理http请求。创建一个单线程的web服务webserver中主要的两个协议是http和tcp。tcp是底层协议,http是构建在tcp之上的。通过std::net库创建一个tcp连接的监听对象,监听地址为127.0.0.1:8080.usestd::net::TcpListener;fnmain(){l......
  • 常见的Dos命令(相当于用指令去操作一件事情)
        注意没有说明就就不用注意大小写和空格打开CMD的方式 ①windows+R会出现运行,输入cmd打开控制台 ②在桌面空白处按住shift建+按鼠标右键,在此处打开powershell窗口 ③打开我的电脑(Window+e)在最上边地址栏输入cmd或者cmd空格路径(路径是打开的c盘还是d盘)cmd以......
  • 前端多线程处理——async/await
    async从字面上看就是“异步”,它放在函数定义之前,是使该函数在调用时开一个子线程,以不影响主线程的运行。而await经常和async组合使用,在async定义的函数中来等待需要时间运行的代码(如ajax请求、Promise对象)的运行结果,以做后续的处理。  如下面的返回Promise对象......
  • Python中最常用的5种线程锁,你都会用吗
    对于日常开发者来讲很少会使用到本章节的内容,但是对框架作者等是必备知识,同时也是高频的面试常见问题。1.线程安全线程安全是多线程或多进程编程中的一个概念,在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现......
  • 三种线程安全的List
    在单线程开发环境中,我们经常使用ArrayList作容器来存储我们的数据,但它不是线程安全的,在多线程环境中使用它可能会出现意想不到的结果。 总结获取线程安全的List我们可以通过Vector、Collections.synchronizedList()方法和CopyOnWriteArrayList三种方式读多写少的情况下,推荐使用......
  • Java基础 多线程的 6 种状态
       Java的虚拟机当中没有定义运行状态,因为当线程抢夺到CPU执行权的时候,虚拟机会把当前线程交给操作系统管理,虚拟机就不管了。 ......
  • Java基础 当某一个线程执行代码时发现锁已经被锁住了,该线程会怎么样?
    当一个线程尝试获取一个已经被其他线程锁住的锁时,它的行为取决于所使用的编程语言和锁的类型。一般情况下,有以下几种可能的行为:1.阻塞等待:线程会被阻塞,直到锁变为可用。这是最常见的情况,通常用于互斥锁。在Java中,可以使用synchronized关键字或ReentrantLock类来实现这种行为。2.......
  • 文本型数字编号排序,职场常见场景!
    1职场实例小伙伴们大家好,今天我们来解决一种职场办公中常见的问题:文本型数字编码排序问题。掌握这个问题的解题思想,有助于我们提高办公效率。如下图所示:是一份小区单元楼户号电费缴纳明细表,A列为户号,B列为电费金额,现在我们想要对B列电费金额进行升序排序,希望按照户号的“楼宇号-单......
  • 线程和进程的区别
    进程和线程是操作系统中重要的概念,都是操作系统资源分配的基本单位,但它们有以下区别:地址空间和资源拥有:同一进程的线程共享本进程的地址空间和资源,而进程之间则是独立的。通信:同一进程内的线程之间可以直接读写彼此的数据空间,便于高效协作;不同进程间则需要借助中间件(如消息队列......
  • 惠普战99 Monster高算工作站发布:96个大核192线程
    惠普发布了战家族新品战99Monster满血高算工作站。据介绍,战99Monster搭载了最新AMD线程撕裂者Pro7000系列处理器,型号为AMDThreadripperPro7995WX,Zen4架构,采用台积电4nm制程。规格达到了恐怖的96核心192线程规模,三级缓存高达384MB,基础频率2.5GHz,最高可睿频至5.1GHz,TDP为35......