中维世纪Java一面
Spring Boot 包扫描
Spring Boot 的启动类不在最外层时如何加载相关的Bean?
- 设置扫描包
@SpringBootApplication(scanBasePackages = {"com.example"})
ThreadPoolExecutor的重要参数
corePoolSize:核心线程数
核心线程会一直存活,及时没有任务需要执行
当线程数小于核心线程数时,即使有线程空闲,线程池也会优先创建新线程处理
设置allowCoreThreadTimeout=true(默认false)时,核心线程会超时关闭
queueCapacity:任务队列容量(阻塞队列)
当核心线程数达到最大时,新任务会放在队列中排队等待执行
maxPoolSize:最大线程数
当线程数>=corePoolSize,且任务队列已满时。线程池会创建新线程来处理任务
当线程数=maxPoolSize,且任务队列已满时,线程池会拒绝处理任务而抛出异常
keepAliveTime:线程空闲时间
当线程空闲时间达到keepAliveTime时,线程会退出,直到线程数量=corePoolSize
如果allowCoreThreadTimeout=true,则会直到线程数量=0
allowCoreThreadTimeout:允许核心线程超时
rejectedExecutionHandler:任务拒绝处理器
两种情况会拒绝处理任务:
当线程数已经达到maxPoolSize,切队列已满,会拒绝新任务
当线程池被调用shutdown()后,会等待线程池里的任务执行完毕,再shutdown。如果在调用shutdown()和线程池真正shutdown之间提交任务,会拒绝新任务
线程池会调用rejectedExecutionHandler来处理这个任务。如果没有设置默认是AbortPolicy,会抛出异常
ThreadPoolExecutor类有几个内部实现类来处理这类情况:
AbortPolicy 丢弃任务,抛运行时异常
CallerRunsPolicy 执行任务
DiscardPolicy 忽视,什么都不会发生
DiscardOldestPolicy 从队列中踢出最先进入队列(最后一个执行)的任务
实现RejectedExecutionHandler接口,可自定义处理器
线程数量怎么确定?
.分析下线程池处理的程序是CPU密集型,还是IO密集型
CPU密集型:核心线程数 = CPU核数 + 1
IO密集型:核心线程数 = CPU核数 * 2
注:IO密集型(某大厂实践经验)
核心线程数 = CPU核数 / (1-阻塞系数) 例如阻塞系数 0.8,CPU核数为4
则核心线程数为20
如何保护核心线程不被清理?
参见
线程池当未调用 shutdown 方法时,是通过队列的 take 方法阻塞核心线程(Worker)的 run 方法从而保证核心线程不被销毁的。
Runnable r = timed ?workQueue.poll(keepAliveTime, TimeUnit.NANOSECONDS) :workQueue.take();
中维世纪Java一面相关推荐
- 中维世纪视频汇聚助力茶之都奶茶连锁店部署智慧运营系统
广西茶之都餐饮管理有限公司是一家起源于广西,面向全国地区招商的茶饮连锁品牌,主打"茶之都"."冰雪森林"两大品牌,截至目前,其全国门店已达1000余家且规模在持 ...
- 中维报警邮件服务器,主打智能分析,中维世纪智能先锋系列产品来了!
原标题:主打智能分析,中维世纪智能先锋系列产品来了! 中维世纪智能先锋系列产品主打"智能分析",包含JVS-C-BP1H2M-AG.JVS-C-BP1H2M-PG(支持POE).J ...
- 中维世纪视频汇聚,为百路以上项目提供一站式视频集中管理服务
中维世纪视频汇聚,以融视云和云视通平台为依托,以端到端产品能力为保障,将分散的不同品牌.不同协议的视频资源进行统一整合和集中管理,可实现视频图像资源大数据的一网汇聚,构建视频数据资源池,同时通过构建视 ...
- 中维世纪安卓开发文档
中维世纪安卓开发记录 作为一个低级码农真的搞不懂中维世纪文档,只有windows和安卓的sdk,水平低或者应用场景广泛了最好直接购买海康威视的,网上教程比较多. 开发环境 Android Studio ...
- 中维世纪监控某一特定时间段视频的恢复
中维世纪监控某一特定时间段视频的恢复 视频文件格式:MP4(3gp) 案例中硬盘被格式化,又录了一部分视频.此硬盘中有很多分区,用R-Studio扫描后基本确定了这一时段视频所在的分区,并且把分区镜像 ...
- 中维世纪助力邯郸某自来水公司实现视频资源汇聚
自来水厂承载着城市的供水.排水.污水处理.再生水利用等工作,厂内配备着大量自来水生产场地及设备,需要对场地情况.设备运行情况.人员操作情况等进行监管以便及时发现并处理问题. 鉴于自来水厂的特殊性及重要 ...
- 海康威视设像头添加到中维世纪监控录像机的方法
需要进海康威视设像头里面设置这二个地方 然后设置在中维世纪录像机里面 高级添加 协议为海康威视协议 端口80 帐号密码你设置的 添加保存就可以了
- java中 数组声明,java数组声明格式
java 声明动态数组,java对象数组详解,java中声明数组,java数组声明格式 Java 中数组的声明一维数组的声明: 在 Java 中,数组是独立的对象,有自身的方法,不是变量的集合. 数组 ...
- java版魔力世纪,魔力世纪下载_魔力世纪Java版下载 - U盘量产网
魔力世纪Java版是同名端游改编而成的大型角色扮演游戏,将端游中的精髓和玩法完美移植到手机上,并且针对手机端的操作习惯,打造便捷的操作模式,让玩家在家睡觉.躺着照样可以畅玩游戏.在端游原有的基础玩法上 ...
最新文章
- Deep Non-Line-of-Sight Reconstruction:深度非视域重建
- fpga如何约束走线_FPGA中的CLOCK REGION和SLR是什么含义
- 损失函数-经验风险最小化-结构风险最小化
- sonarQube 7.2版本下载配置pmd插件(版本要兼容),并设置只使用pmd规则
- Java基础查漏补缺(2)
- 【从入门到放弃】23种设计模式(1):设计模式综述
- 【机器学习】 - 激活函数与交叉熵Sigmoid, Softmax, binary_crossentropy, categorican_crossentropy区别
- Web服务器网管交流一下
- python中的引用,Python里的引用和拷贝
- eclipse svn Subversive
- 10个比较不错的 JavaScript 库
- Python基础PTA习题答案
- PS小知识(二)——画固定大小的形状
- Error installing to Instantiated: name=AttachmentStore state=Described
- snaker并行任务示例
- 奇葩经历之一_Hotmail邮箱无法查看和发送任何邮件
- 干货|我的三年产品基本功之PRD文档攥写
- 泰山OFFICE技术讲座:字体属性的上标研究1:上标是什么
- 著名的海龟式期货交易系统完整版来了!值得收藏!
- 【转】Tomato-shibby无线中继(无线级联)