文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SpringBoot中线程池的设置

2024-12-03 03:19

关注

1.一些概念介绍:

1.1计算机基础知识:

计算机主要组件卫CPU、内存、磁盘,三大组件中,CPU的运行速率高于内存的1000倍以上,内存的运行速率高于磁盘1000倍以上。对比运行速率结果为:CPU>内存>磁盘。

1.2上下文切换:

涉及到上下文切换,单核cpu切换是没意义的,多核cpu的切换才能真正的满足充分利用资源达到高性能的目的。

1.3线程争用:

当多个线程执行任务不相同,但是访问资源又相同的时候,有看呢过会引起数据问题。

1.4并发执行:

可以理解为线程执行任务相同,访问资源相同的时候触发的场景。

1.5 自旋锁:

很形象的一个比喻是:冲奶的时候孩子还在哭,等着妈妈送来奶瓶和换尿布,直到妈妈处理好所有的事情才算结束,要不然就是个一直等待的状态。

1.6 互斥锁:

它跟自旋锁类似,不同的是竞选失败线程会回去睡觉,直到锁可用来竞争。一直进行循环等。

1.7 乐观锁:

很常见的乐观锁的例子是在数据库的数据操作中,直到提交更新的时候才给相关的数据行加锁。

1.8 悲观锁:

悲观锁就是如果一个事务操作用了锁,那只有当这个事务把锁释放(把妈妈给释放),其他事务才能够执行与该锁冲突的操作。

1.9 时间片分配算法:

CPU通过给每个线程分配CPU时间来实现任务运行,这个时间片一般是几十毫秒。这样不停地来回切换任务,运行程序,划分时间片,就叫做:时间片分配算法。

2.线程池配置介绍:

因为线程池的设置肯定是跟着服务器硬件和业务处理走的,所以不通场景下配置是不一样的。场景假设:

key值 配置值 备注
tasks(系统每秒任务数) 每秒的任务数,假设为100~1000  
taskcost(执行任务花的时间) 每个任务花费时间,假设为0.1s  
responsetime (允许响应的最大时间) 系统允许容忍的最大响应时间,假设为1s  

计算公式:

设置key值 计算公式 备注
核心线程数设置(corePoolSize) threadcount = tasks/(1/taskcost) =tasks*taskcost = (200~1000)*0.1 = 20~100 个线程 corePoolSize设置应该大于20 根据8020原则,如果80%的每秒任务数小于200,那么corePoolSize设置为20即可
队列数设置(queueCapacity) 计算可得 queueCapacity = 20/0.1*1 = 200 意思是队列里的线程可以等待1s,超过了的需要新开线程来执行 切记不能设置为Integer.MAX_VALUE,这样队列会很大,线程数只会保持在corePoolSize大小,当任务陡增时,不能新开线程来执行,响应时间会随之陡增
最大线程数设置(maxPoolSize) 计算可得 maxPoolSize = (1000-200)/10 = 80 (最大任务数-队列容量)/每个线程每秒

3.总结:

 

多线程的使用场景是多个任务执行,但是CPU处理时间不长,占用的时间片不高,那么多线程会很大的提升性能,相反,多线程还没有单线程快。SpringBoot中比较重要的线程池的概念三个:核心线程数、队列数、最大线程数。当任务来临的时候如果corePoolSize 没有达到那么会创建新的线程执行任务直到corePoolSize 达到设定值的时候开始进入到队列中,队列满了以后开始创建新的线程直到最大线程maxPoolSize 的设置值,全部满的时候开始执行设置的拒绝策略。

 

来源: Java时间屋内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯