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

深情密码免费观看网站电影资源网站怎么做

深情密码免费观看网站,电影资源网站怎么做,rp怎么做网站,上海工商核名查询系统官网背景最近项目在jenkins部署的时候发现部署很慢#xff0c;查看部署日志发现kill命令执行后应用pid还存在#xff0c;导致必须在60秒等待期后kill -9杀死springboot进程 应用环境 springboot dependencygroupIdorg.springframework.boot/groupId查看部署日志发现kill命令执行后应用pid还存在导致必须在60秒等待期后kill -9杀死springboot进程 应用环境 springboot dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactIdversion2.6.3/version /dependencyspringcloud dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion2021.0.1.0/versiontypepom/typescopeimport/scope /dependency监控 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactIdversion2.6.3/version /dependency原因分析 通过将全部日志调整为debug级别观察到有个定时任务线程在不断执行例子如下 SpringBootApplication MapperScan(com.test.test.mapper) public class TestApplication implements CommandLineRunner {static ScheduledExecutorService executor;public static void main(String[] args) {executor Executors.newScheduledThreadPool(1);SpringApplication.run(TestApplication.class, args);}private static void run(ScheduledExecutorService executor) {executor.scheduleAtFixedRate(() - {System.out.println(run);}, 0, 1, TimeUnit.SECONDS);Overridepublic void run(String... args) throws Exception {run(executor);} }上述代码中由于线程定义默认是非守护线程执行优雅停机后在用户线程停止后非守护线程不会自动停止 解决办法 定义为守护线程 对于非业务逻辑例如监控数据上传日志记录这样做非常方便但对于系统业务这么做会导致未执行完成任务被丢弃。将线程池定义为springbean交予spring容器管理其生命周期 SpringBootApplication MapperScan(com.test.test.mapper) public class TestApplication implements CommandLineRunner {public static void main(String[] args) {SpringApplication.run(TestApplication.class, args);}private static void run(ScheduledExecutorService executor) {executor.scheduleAtFixedRate(() - {System.out.println(run);}, 0, 1, TimeUnit.SECONDS);}Beanpublic ScheduledExecutorService executor() {return Executors.newScheduledThreadPool(1);}Overridepublic void run(String... args) throws Exception {ScheduledExecutorService executor SpringUtil.getBean(ScheduledExecutorService.class);run(executor);} }效果 弊端此类方式中由于线程池的工作线程属于非守护线程应用会等待所有任务执行完成后才关闭。由于容器已经关闭数据库连接池已经释放这时候任务再获取spring容器内容会报错因此这种方案只适用于用户日志记录监控等非业务功能效果如下 SpringBootApplication MapperScan(com.test.test.mapper) Slf4j public class TestApplication implements CommandLineRunner {public static void main(String[] args) {SpringApplication.run(TestApplication.class, args);}private static void run(ExecutorService executor) {executor.execute(() - {log.info(start);try {TimeUnit.SECONDS.sleep(25);User user SpringUtil.getBean(IUserService.class).findById(10L);log.info(用户信息: user);} catch (Exception ex) {ex.printStackTrace();}log.info(end);});}Beanpublic ExecutorService executor() {return new ThreadPoolExecutor(10, 10, 10, TimeUnit.SECONDS,new ArrayBlockingQueue(1),r - {Thread thread new Thread(r);return thread;},new ThreadPoolExecutor.DiscardOldestPolicy());}Overridepublic void run(String... args) throws Exception {ExecutorService executor SpringUtil.getBean(ExecutorService.class);run(executor);} }3.使用spring提供的ThreadPoolTaskExecutor线程池 SpringBootApplication MapperScan(com.test.test.mapper) Slf4j public class TestApplication implements CommandLineRunner {public static void main(String[] args) {SpringApplication.run(TestApplication.class, args);}private static void run(ThreadPoolTaskExecutor executor) {executor.execute(() - {log.info(start);try {TimeUnit.SECONDS.sleep(25);User user SpringUtil.getBean(IUserService.class).findById(10L);log.info(用户信息: user);} catch (Exception ex) {ex.printStackTrace();}log.info(end);});}Beanpublic ThreadPoolTaskExecutor executor() {int core Runtime.getRuntime().availableProcessors();ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor();executor.setCorePoolSize(core 3 ? core 1 : core);int maxSize core 2;executor.setMaxPoolSize(maxSize);//使用同步队列避免任务进入等待队列排队导致耗时过长executor.setQueueCapacity(0);executor.setKeepAliveSeconds(30);executor.setWaitForTasksToCompleteOnShutdown(true);executor.setAwaitTerminationSeconds(25);executor.setThreadNamePrefix(async-);executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());executor.initialize();return executor;}Overridepublic void run(String... args) throws Exception {ThreadPoolTaskExecutor executor SpringUtil.getBean(ThreadPoolTaskExecutor.class);run(executor);} }从上图可以看到应用会等待线程池任务执行完毕后才选择优雅关闭因此对于异步业务任务ThreadPoolTaskExecutor才是首选。 spring已经内置了ThreadPoolTaskExecutor 线程池实例我们可以尝试修改其配置参数简化代码来尝试例如 spring:task:execution:pool:queue-capacity: 0core-size: 2max-size: 16keep-alive: 30sthread-name-prefix: async-shutdown:await-termination: trueawait-termination-period: 25sSpringBootApplication MapperScan(com.test.test.mapper) Slf4j public class TestApplication implements CommandLineRunner {public static void main(String[] args) {SpringApplication.run(TestApplication.class, args);}private static void run(ThreadPoolTaskExecutor executor) {executor.execute(() - {log.info(start);try {TimeUnit.SECONDS.sleep(25);User user SpringUtil.getBean(IUserService.class).findById(10L);log.info(用户信息: user);} catch (Exception ex) {ex.printStackTrace();}log.info(end);});}Overridepublic void run(String... args) throws Exception {ThreadPoolTaskExecutor executor SpringUtil.getBean(ThreadPoolTaskExecutor.class);run(executor);} }效果与上述手动创建效果一样但是内置的ThreadPoolTaskExecutor线程池无法通过配置修改拒绝策略rejectedExecutionHandler队列满了之后默认是AbortPolicy会丢弃加入的任务并抛异常spring内置此线程池的初衷在于为定时任务使用例如Scheduled。
http://www.w-s-a.com/news/496444/

相关文章:

  • 整站下载器 做网站地图地产项目网站设计
  • 创意设计网站公司手机wap网站建设多少钱
  • 甘肃省第八建设集团公司网站seo高级优化方法
  • 精美的商城网站介绍最多人用的wordpress子主题
  • 检察门户网站建设情况俄外长抵达北京
  • 老电脑做网站服务器网站在线留言如何做
  • 南宁广告公司网站建设小程序源码破解
  • 沛县做网站xlec网站建设开发方式包括哪些方面
  • 山西网站建设 哪家好四川城乡和建设厅网站
  • 有瀑布流的网站小型商城网站
  • 百石网怎么做网站二次开发软件
  • 网站域名是什么东西制作网页哪家好
  • 合肥网站建设团队简述网站内容管理流程
  • 网站广告是内容营销吗wordpress增加背景图片
  • 网站建设技术jsp课程设计响应式布局网站开发
  • 东莞网站排名优化seo套路网站怎么做的
  • 我做网站网络建站一般多少钱
  • 如何快速提升网站关键词排名房地产网站开发毕业设计
  • 做网站 提交源码 论坛sem分析是什么意思
  • 网站建设与部署阿里云大学百度付费推广有几种方式
  • 作品集怎么做网站个人简历模板免费下
  • 工业网站素材重庆关键词自动排名
  • 拖拽式网站建设费用微网站怎么做的好名字
  • 长沙电信网站备案谷歌推广怎么做最有效
  • 网站建设与管理总结报告华为开发者联盟
  • 门诊部网站建设天空建筑网站
  • 扬州市城乡建设网站高端品牌鞋子有哪些牌子
  • 杭州网站建设招聘网长沙网络销售公司
  • 网站制作一年多少钱免费做电子章网站
  • 信誉好的营销网站建设徐州市铜山新区建设局网站