使用java语言如何更好的使用多线程?
2024-09-01 14:47:48
① 高并发、任务执行时间短的业务,线程池线程数可以设置为CPU核数+1,减少线程上下文的切换。
② 并发不高、任务执行时间长的业务要区分开看:
假如是业务时间长集中在I/O操作上,也就是I/O密集型的任务,因为I/O操作并不占用CPU,所以不要让所有的CPU闲下来,可以加大线程池中的线程数目,让CPU处理更多的业务。
假如是业务时间长集中在计算操作上,也就是计算密集型任务,这个就没办法了,和①一样吧,线程池中的线程数设置得少一些,减少线程上下文的切换。
假如是业务时间长集中在计算操作上,也就是计算密集型任务,这个就没办法了,和①一样吧,线程池中的线程数设置得少一些,减少线程上下文的切换。
③ 并发高、业务执行时间长,解决这种类型任务的关键不在于线程池而在于整体架构的设计,看看这些业务里面某些数据是否能做缓存是第一步,增加服务器是第二步,至于线程池的设置,设置参考②。
最后,业务执行时间长的问题,也可能需要分析一下,看看能不能使用中间件对任务进行拆分和解耦。
最新文章
- vim - Convert between hex and decimal
- 使用Django——安装
- RAID
- 20151215jqueryUI--dialog代码备份
- 【转】Android点击空白区域,隐藏输入法软键盘
- UVa 11621 - Small Factors
- C#5.0支持的await格式
- PCI-E调试方式
- 微信小程序--家庭记账本开发--04
- laravel创建项目
- docker 端口映射 及外部无法访问问题
- Redis分布式锁实现
- python re 实例
- centos下安装pip-python
- mysql错误代码对照表较完整 mysql_errno()
- mysql分区表之一:分区原理和优缺点【转】
- php empty()与isset()
- kettle添加hadoop cluster时报错Caused by: java.lang.IllegalArgumentException: Does not contain a valid host:port authority: hadoop:password@node56:9000
- 使用 FireMonkey 构建优秀专业 Android 应用的10点提示
- 低于0.01%的极致Crash率是怎么做到的?