社区
Java EE
帖子详情
线程池中,客户并发访问量超过线程最大设置数怎么办?
changshawei
2010-06-17 11:23:24
在线程池中,我设置的最大线程量是10,但忽然处于某个作业高峰期,客户访问量达到100,而此时我前面十个线程都处于忙碌状态,这时候我该怎么办?
...全文
1749
8
打赏
收藏
线程池中,客户并发访问量超过线程最大设置数怎么办?
在线程池中,我设置的最大线程量是10,但忽然处于某个作业高峰期,客户访问量达到100,而此时我前面十个线程都处于忙碌状态,这时候我该怎么办?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
closewbq
2010-06-18
打赏
举报
回复
服务器忙。。。。。
mochibing
2010-06-18
打赏
举报
回复
可以通过线程池+等待队列的形式来处理,比如说线程池是500,高峰期可能出现线程池已经满了但是还有用户请求不断过来,这时就要把这些请求放到等待队列里面,等待队列设定一个最大等待时间,超过最大等待时间的请求自动拒绝,当线程池有空位的时候自动通知等待队列把用户请求转发到线程池处理。
当然条件允许的话还是尽量加大线程池,实在没办法才使用等待队列的方式
changshawei
2010-06-18
打赏
举报
回复
[Quote=引用 1 楼 cayu 的回复:]
当然是加大线程池了,楼主 想问什么?
[/Quote]
就是不管你加多大线程池,我同时并发的线程都有超过你设置最大线程的可能,如你设置的线程池最大线程是100,但某时刻那100个线程都处于忙碌中,此时我进来第101个用户请求,我该怎么办?
dr_lou
2010-06-18
打赏
举报
回复
池子弄大点吧。非高峰期也不会浪费太多的。
antony0203
2010-06-18
打赏
举报
回复
加线程,加缓存
dr_lou
2010-06-18
打赏
举报
回复
[Quote=引用 4 楼 changshawei 的回复:]
引用 1 楼 cayu 的回复:
当然是加大线程池了,楼主 想问什么?
就是不管你加多大线程池,我同时并发的线程都有超过你设置最大线程的可能,如你设置的线程池最大线程是100,但某时刻那100个线程都处于忙碌中,此时我进来第101个用户请求,我该怎么办?
[/Quote]
等待啊、排队。
俊哥123
2010-06-18
打赏
举报
回复
这个问题楼主想偏了吧,1个客户来,就占一个线程?SOCKET的?
正常应该是一个客户请求一个任务,线程处理完,还可以处理下一个客户的请求
不是说100个客户就需要100个线程 吧
jspxnet
2010-06-17
打赏
举报
回复
当然是加大线程池了,楼主 想问什么?
2023最新,最全,最细的JUC多
线
程
并发
教程
本套课程分为三个部分
并发
理论
并发
入门
并发
应用在
并发
理论当
中
我会向你们介绍
并发
问题从硬件 CPU 层面到软件层面产生的原因,然后由此作为切入点向你们引入CPU、Cache、缓存一致性协议、内存与缓存模型、屏障、JMM模型等内容。在
并发
入门当
中
我会向你们介绍 Java
中
如何使用
线
程,并介绍了使用
线
程的三种方式。紧接着由
线
程安全问题引出 Java 提供的两个解决
线
程安全问题的关键字:volatile 和 synchronized ,并带你们从 hotspot 源码层面详细分析了这两个关键字的实现流程。接着就是 Unsafe、CAS、LockSupport、ThreadLocal 等内容的详细分析。在
并发
应用
中
就就会全面的带你们分析 JUC 包
中
的源码了,具体会分析下面这些:原子操作类
中
的所有类源码,包括 XXXAccumulator 、 XXXAdder锁相关,包括 AQS 所有源码、Condition 条件源码、ReentrantLock 、ReentrantReadWriteLock
并发
工具相关
并发
集合相关,CopyOnWriteArrayList 和 ConcurrentHashMap阻塞队列相关
线
程池
相关Fork/Join 相关
线
程数
设置
以及
客户
并发
访问
量
超过
线
程最大
设置
数的处理方法
1.
线
程数
设置
IO密集计算:如何将硬件利用率达到极致呢 我们将 R = IO耗时 / Cpu耗时 我们从上面的例子来看 如果IO耗时/Cpu耗时 = 10 (我们平常可以用工具apm来统计这个比例) 创建
线
程A 执行io操作 我们希望IO操作的时候 Cpu不能闲着 所以就应该创建10个
线
程去执行Cpu计算 当Io操作完毕后刚好Cpu也执行完毕 ,他们的利用率都是百分之100 在执行这段代码的时候。 这个例子我们要创建 1+ 10 = 11个
线
程执行起来效率更高,于是我们就得到了公式: 1+ I/O耗时
线
程池
核心
线
程数和最大
线
程数总结
核心
线
程数配置个数:看IO密集型,还是CPU密集型 (1)一般平时cpu使用率4%以下,都是IO密集型,IO密集型具体看实践,目前项目里核心
线
程数
设置
50,最大
线
程数可以和核心
线
程数相同,队列配置大一些,使永远触发不到最大
线
程数 (2)如果是大
量
计算CPU使用率过高,属于CPU密集型,CPU密集型以4C8G为例,核心
线
程数一般
设置
4,最大
线
程数可以和核心
线
程数相同,队列配置大一些,使永远触发不到最大
线
程数 核心
线
程数永远不会销毁,和
线
程池
生命周期一样, 除非核心
线
程shutdown ...
Java
并发
:
线
程池
如何
设置
线
程数
目录 一、理论分析 二、实际应用 为了加快程序处理速度,我们会将问题分解成若干个
并发
执行的任务。并且创建
线
程池
,将任务委派给
线
程池
中
的
线
程,以便使它们可以
并发
地执行。在高
并发
的情况下采用
线
程池
,可以有效降低
线
程创建释放的时间花销及资源开销,如不使用
线
程池
,有可能造成系统创建大
量
线
程而导致消耗完系统内存以及“过度切换”(在JVM
中
采用的处理机制为时间片轮转,减少了
线
程间的相互切换)。 但是有一个很大的问题摆在我们面前,即我们希望尽可能多地创建任务,但由于资源所限我们又不能创建过多的
线
程。.
Java
并发
-创建多少
线
程合适? 超出
线
程数的请求怎么
办
?
目录 一、创建多少
线
程合适? 二、ThreadPoolExecutor构造函数 2.1 添加任务
线
程池
调整流程 2.2 拒绝任务handler有四个选择: 策略1:ThreadPoolExecutor.AbortPolicy 策略2:ThreadPoolExecutor.CallerRunsPolicy 策略3:ThreadPoolExecutor.DiscardOldestPoli...
Java EE
67,514
社区成员
225,878
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章