当前位置: 首页 > news >正文

排名前50名免费的网站建设银行门户网站

排名前50名免费的网站,建设银行门户网站,长春市建设工程信息网官网,长沙理工大学网络教学平台1.背景 在后台开发中#xff0c;会经常用到线程池技术#xff0c;对于线程池核心参数的配置很大程度上依靠经验。然而#xff0c;由于系统运行过程中存在的不确定性#xff0c;我们很难一劳永逸地规划一个合理的线程池参数。 在对线程池配置参数进行调整时#xff0c;一…1.背景 在后台开发中会经常用到线程池技术对于线程池核心参数的配置很大程度上依靠经验。然而由于系统运行过程中存在的不确定性我们很难一劳永逸地规划一个合理的线程池参数。 在对线程池配置参数进行调整时一般需要对服务进行重启这样修改的成本就会偏高。一种解决办法就是将线程池的配置放到平台侧运行开发同学根据系统运行情况对核心参数进行动态配置。 本文以Nacos作为服务配置中心以修改线程池核心线程数、最大线程数为例实现一个简单的动态化线程池。 2.code 1.依赖 dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactIdversion2021.1/version /dependency dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactIdversion2021.1/version /dependency dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId /dependency dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId /dependency2.配置yml文件 bootstrap.yml server:port: 8090# 应用名称nacos会将该名称当做服务名称 spring:application:name: order-servicecloud:nacos:discovery:namespace: publicserver-addr: localhost:8848config:server-addr: localhost:8848file-extension: ymlapplication.yml spring:profiles:active: dev为什么要配置两个yml文件 springboot中配置文件的加载是存在优先级顺序的bootstrap优先级高于application。 nacos在项目初始化时要保证先从配置中心进行配置拉取拉取配置之后才能保证项目的正常启动。 3.nacos配置 登录到nacos管理页面新建配置如下图所示 注意Data ID的命名格式为${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension} 在本文中Data ID的名字就是order-service-dev.yml。 配置详情 这里我们只配置了两个参数核心线程数量和最大线程数。 4.线程池配置和nacos配置变更监听 RefreshScope Configuration public class DynamicThreadPool implements InitializingBean {Value(${core.size})private String coreSize;Value(${max.size})private String maxSize;private static ThreadPoolExecutor threadPoolExecutor;Autowiredprivate NacosConfigManager nacosConfigManager;Autowiredprivate NacosConfigProperties nacosConfigProperties;Overridepublic void afterPropertiesSet() throws Exception {//按照nacos配置初始化线程池threadPoolExecutor  new ThreadPoolExecutor(Integer.parseInt(coreSize), Integer.parseInt(maxSize), 10L, TimeUnit.SECONDS,new LinkedBlockingQueue(10),new ThreadFactoryBuilder().setNameFormat(c_t_%d).build(),new RejectedExecutionHandler() {Overridepublic void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {System.out.println(rejected!);}});//nacos配置变更监听nacosConfigManager.getConfigService().addListener(order-service-dev.yml, nacosConfigProperties.getGroup(),new Listener() {Overridepublic Executor getExecutor() {return null;}Overridepublic void receiveConfigInfo(String configInfo) {//配置变更修改线程池配置System.out.println(configInfo);changeThreadPoolConfig(Integer.parseInt(coreSize), Integer.parseInt(maxSize));}});}/*** 打印当前线程池的状态*/public String printThreadPoolStatus() {return String.format(core_size:%s,thread_current_size:%s; thread_max_size:%s;queue_current_size:%s,total_task_count:%s, threadPoolExecutor.getCorePoolSize(),threadPoolExecutor.getActiveCount(), threadPoolExecutor.getMaximumPoolSize(), threadPoolExecutor.getQueue().size(),threadPoolExecutor.getTaskCount());}/*** 给线程池增加任务** param count*/public void dynamicThreadPoolAddTask(int count) {for (int i  0; i  count; i) {int finalI  i;threadPoolExecutor.execute(new Runnable() {Overridepublic void run() {try {System.out.println(finalI);Thread.sleep(10000);} catch (InterruptedException e) {e.printStackTrace();}}});}}/*** 修改线程池核心参数** param coreSize* param maxSize*/private void changeThreadPoolConfig(int coreSize, int maxSize) {threadPoolExecutor.setCorePoolSize(coreSize);threadPoolExecutor.setMaximumPoolSize(maxSize);} }这个代码就是实现动态线程池和核心了需要说明的是 RefreshScope这个注解用来支持nacos的动态刷新功能 Value(${max.size})Value(${core.size})这两个注解用来读取我们上一步在nacos配置的具体信息同时nacos配置变更时能够实时读取到变更后的内容 nacosConfigManager.getConfigService().addListener配置监听nacos配置变更时实时修改线程池的配置。 5.controller 为了观察线程池动态变更的效果增加Controller类。 RestController RequestMapping(/threadpool) public class ThreadPoolController {Autowiredprivate DynamicThreadPool dynamicThreadPool;/*** 打印当前线程池的状态*/GetMapping(/print)public String printThreadPoolStatus() {return dynamicThreadPool.printThreadPoolStatus();}/*** 给线程池增加任务** param count*/GetMapping(/add)public String dynamicThreadPoolAddTask(int count) {dynamicThreadPool.dynamicThreadPoolAddTask(count);return String.valueOf(count);} }6.测试 启动项目访问http://localhost:8090/threadpool/print打印当前线程池的配置。 可以看到这个就是我们之前在nacos配置的线程数。 访问http://localhost:8090/threadpool/add?count20增加20个任务。 重新打印线程池配置 可以看到已经有线程在排队了。 为了能够看到效果我们多访问几次/add接口增加任务数在控制台出现拒绝信息时调整nacos配置。 此时执行/add命令时所有的线程都会提示rejected。 调整nacos配置将核心线程数调整为50最大线程数调整为100. 重新多次访问/add接口增加任务发现没有拒绝信息了。这时打印具体的线程状态发现线程池参数修改成功。
http://www.hkea.cn/news/14556823/

相关文章:

  • 做网站的字体大小保定市工程造价信息网
  • 科讯cms 网站地图pano2vr输出html5教程
  • 网站兼容性问题脑叶公司
  • 导航网站的广告怎么做的苏州关键词优化搜索排名
  • 天津网站建设制作品牌公司wordpress根据文章id显示内容
  • 网站格式图片程序员接活的平台网站
  • 建设一个大型电影网站wordpress 加水印
  • app和微网站的对比分析做网站要钱吗?
  • 网站做美食视频挣钱吗网站建设设计维片
  • php可以做视频网站国外著名的网站设计公司
  • 抄袭网站案例全网霸屏推广系统
  • 做网站代理需要办什么营业执照新服务器做网站如何配置
  • 效果图哪个网站好河南省企业年报网上申报入口
  • 淮南做网站推广wordpress 图片地址
  • 网站开发端口查询友情链接查询友情链接检测
  • wordpress 插件手机贵阳做网站seo
  • 检察院门户网站建设自查报告wordpress 继续阅读
  • 网站建设招投标cerntos wordpress
  • 金牛网站建设自己怎么手机做网站
  • 网站开发学习流程图企业网页设计尺寸
  • 模板网站怎么做才美观网站备案核验单
  • 做网站犯法了 程序员有责任吗齐装网
  • html5网站开发实例教程火车wordpress
  • 镜美硅藻泥网站是那家公司做的怎麽用dw做网站轮播海报
  • 花垣县建设局网站html5单页网站
  • 网站公告栏代码山西建立网站营销策划
  • 成都什么是网站建设天津网站建设 熊掌号
  • 做网站体会心得网站怎么不要钱自己做
  • 青岛市城市建设局网站静态网站模板下载
  • 织梦网站被黑做网站要多长时间