网站建设系统服务机构万网域名注册官网邮箱

news/2025/9/27 5:40:31/文章来源:
网站建设系统服务机构,万网域名注册官网邮箱,网站建设备案图片,wordpress门户源码在异步任务执行的时候#xff0c;我们知道其背后都有一个线程池来执行任务#xff0c;但是为了控制异步任务的并发不影响到应用的正常运作#xff0c;我们需要对线程池做好相关的配置#xff0c;以防资源过度使用。这个时候我们就考虑将线程池进行隔离了。 那么我们为啥要…在异步任务执行的时候我们知道其背后都有一个线程池来执行任务但是为了控制异步任务的并发不影响到应用的正常运作我们需要对线程池做好相关的配置以防资源过度使用。这个时候我们就考虑将线程池进行隔离了。 那么我们为啥要隔离Async异步任务的线程池 控制资源通过隔离异步任务的线程池可以更好地控制系统的资源使用。不同类型的异步任务可能对系统资源的需求不同例如某些任务可能需要更多的线程数或更大的队列容量。通过隔离线程池可以为每种类型的任务分配适当的资源避免资源争用和过度消耗。 优化性能隔离异步任务的线程池可以帮助优化系统的性能。如果所有的异步任务共享同一个线程池当某个任务出现阻塞或执行时间过长时可能会影响其他任务的执行。通过隔离线程池可以确保每个任务都有独立的线程池资源提高系统的并发能力和响应性能。 业务隔离有时候不同的业务逻辑可能需要不同的异步任务处理方式。通过隔离线程池可以为每个业务逻辑定义独立的线程池以满足不同业务的需求。例如某些任务可能需要更高的优先级或更短的超时时间而另一些任务可能需要更大的线程池容量。通过隔离线程池可以更好地管理和调整每个业务逻辑的异步任务执行环境。 下面看一个demo demo 创建自定义的线程池首先你可以创建一个自定义的线程池用于处理Async注解标记的异步任务。可以使用ThreadPoolTaskExecutor类来创建线程池。 Configuration EnableAsync public class AsyncConfig implements AsyncConfigurer {Bean(name asyncTaskExecutor)public Executor asyncTaskExecutor() {ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor();// 配置线程池属性executor.setCorePoolSize(10);executor.setMaxPoolSize(20);executor.setQueueCapacity(100);executor.setThreadNamePrefix(AsyncTask-);executor.initialize();return executor;}Overridepublic Executor getAsyncExecutor() {return asyncTaskExecutor();} }在上述示例中我们创建了一个名为asyncTaskExecutor的线程池并配置了核心线程数、最大线程数、队列容量等属性。 在异步任务方法上指定线程池接下来你可以在需要异步执行的方法上使用Async注解并通过value属性指定要使用的线程池。 Service public class MyService {Async(asyncTaskExecutor)public void asyncMethod() {// 异步任务的具体逻辑} }在上述示例中我们使用Async(asyncTaskExecutor)注解将asyncMethod()方法标记为异步任务并指定了使用名为asyncTaskExecutor的线程池。 实际案例 记得在启动类中添加EnableAsync注解呀 我们来初始化多个线程池 EnableAsync Configuration public class TaskPoolConfig {Beanpublic Executor taskExecutor1() {ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor();executor.setCorePoolSize(2);executor.setMaxPoolSize(2);executor.setQueueCapacity(10);executor.setKeepAliveSeconds(60);//使用线程名前缀可以用来观察顺序executor.setThreadNamePrefix(executor-1-);executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());return executor;}Beanpublic Executor taskExecutor2() {ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor();executor.setCorePoolSize(2);executor.setMaxPoolSize(2);executor.setQueueCapacity(10);executor.setKeepAliveSeconds(60);executor.setThreadNamePrefix(executor-2-);executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());return executor;} } 接下来创建一个异步任务然后指定要使用线程池名字。 Slf4j Component public class AsyncTasks {public static Random random new Random();Async(taskExecutor1)public CompletableFutureString doTaskOne(String taskNo) throws Exception {log.info(开始任务{}, taskNo);long start System.currentTimeMillis();Thread.sleep(random.nextInt(10000));long end System.currentTimeMillis();log.info(完成任务{}耗时{} 毫秒, taskNo, end - start);return CompletableFuture.completedFuture(任务完成);}Async(taskExecutor2)public CompletableFutureString doTaskTwo(String taskNo) throws Exception {log.info(开始任务{}, taskNo);long start System.currentTimeMillis();Thread.sleep(random.nextInt(10000));long end System.currentTimeMillis();log.info(完成任务{}耗时{} 毫秒, taskNo, end - start);return CompletableFuture.completedFuture(任务完成);}} 创建一个测试类 Slf4j SpringBootTest public class ApplicationTests {Autowiredprivate AsyncTasks asyncTasks;Testpublic void test() throws Exception {long start System.currentTimeMillis();// 线程池1CompletableFutureString task1 asyncTasks.doTaskOne(1);CompletableFutureString task2 asyncTasks.doTaskOne(2);CompletableFutureString task3 asyncTasks.doTaskOne(3);// 线程池2CompletableFutureString task4 asyncTasks.doTaskTwo(4);CompletableFutureString task5 asyncTasks.doTaskTwo(5);CompletableFutureString task6 asyncTasks.doTaskTwo(6);// 一起执行CompletableFuture.allOf(task1, task2, task3, task4, task5, task6).join();long end System.currentTimeMillis();log.info(任务全部完成总耗时 (end - start) 毫秒);}}在上面的单元测试中一共启动了6个异步任务前三个用的是线程池1后三个用的是线程池2。 先不执行根据设置的核心线程2和最大线程数2我们来猜猜线程的执行顺序。 线程池1的三个任务task1和task2会先获得执行线程然后task3因为没有可分配线程进入缓冲队列 线程池2的三个任务task4和task5会先获得执行线程然后task6因为没有可分配线程进入缓冲队列 任务task3会在task1或task2完成之后开始执行 任务task6会在task4或task5完成之后开始执行 执行结果 通过以上步骤你可以实现对Async异步任务的线程池进行隔离。这样可以根据需要创建多个线程池并为不同的异步任务指定不同的线程池以实现任务之间的隔离和资源控制。通过隔离Async异步任务的线程池可以实现对系统资源的控制、性能的优化和业务逻辑的隔离。这样可以提高系统的稳定性、可伸缩性和灵活性更好地满足不同业务场景下的需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/919097.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站设计注册wordpress aws

硬件配置 内存 :≥1G 硬盘空间:≥10G 上传oracle11g安装包: putty上用wcw用户登录,通过ftp服务上传oracle安装文件到/home/wcw目录下解压 #unzip linux_11gR2_database_1of2.zip #unzip linux_11gR2_database_2of2.zip 检查和安装…

php网站开发技术与开源系统应用 实训指导书计算机选什么专业最好

Go语言中常用的去除字符串中指定字符的方法如下表所示。 表:字符串处理函数 方法功能描述 func Trim(s string, cutset string) string 将字符串 s 首尾包含在 cutset 中的任一字符去掉返回 func TrimFunc(s string, f func(rune) bool) string 将字符串 s 首尾满足函数 f(r)=…

做网站一般的尺寸德阳建设网站

Chatanywhere: chatAnywhere 在问 | 让知识无界,智能触手可及 项目简介 这是一个免费的在线聊天工具,旨在让用户更方便地享受科技带来的便利。用户可以使用我们的工具来获取答案、寻求建议、进行翻译和计算等等。这是由一位个人开发者创建的&#xff…

网站规划与建设是什么东昌府网站建设公司

目录 写在前面 1.我们的着装 2.我们善于学习 3.我们善于解决问题 4.我们很单纯 5.我们喜欢聆听 6.我们很有创造力 7.我们善于分享 8.我们很细心 9.和我们约会的好处 10.活捉程序员的技巧 11.值此1024程序员节,我们的愿望 12.附上程序员装逼指南 写在最…

网站开发常用软件环保局网站建设

来源:网络大数据摘要:尽管科幻小说可能将人工智能机器人描绘成坏人,但一些科技巨头现在也将其用于安全。 微软和优步等公司使用Knightscope K5机器人巡逻停车场和大型户外区域来预测和预防犯罪。 机器人可以读取车牌,报告可疑活动…

番禺高端网站制作在什么网站可以做推广

前言之说好的都买呢在4月份在入了BTR1后,研究下一个蓝牙耳放时,网上有人推荐过山灵m0,不过当时BTR3正在做活动,并且作为一个耳放来说BTR3更为纯粹,最后还是先入手BTR3并暂缓了m0的购置,在玩腻了BTR3后&…

网站建设工作总结6购买域名是什么意思

基本术语 本文中,proto [[Prototype]] 原型链 基本思想: 构造函数生成的对象有一个指针(proto)指向构造函数的原型。如果将构造函数1的原型指向另一个构造函数2的实例,则构造函数1的实例__proto__.proto 指向了构…

全国哪个餐饮品牌的网站做的好处靖江建设局网站

最近在看《高性能的 Mysql》一书,下面是关于如何学习统计 Mysql 服务器状态的学习总结,主要是学习使用 SHOW STATUS,SHOW ENGINE INNODB STATUS,SHOW PROCESSLIST,SHOW PROFILE 四个命令。命令一:SHOW STAT…

做网站可以赚钱嘛软件技术专升本

量子计算机算法与应用研究 学科分类:计算机科学 湖北省沙市中学 谢晓啸 摘要 1.量子计算机 2.量子计算机算法 3.移动互联 4.云计算 5.经典计算机的局限 6.量子计算前景 二零一四年一月十二日 目 录 摘 要......................................................…

兰州网站建设优化推广wordpress5.0调用api接口

JVM全称是Java虚拟机,在聊什么是JVM之前,我们不妨看⼀下这张图。 从这张图中可以看出JVM所处的位置,同时也能看出它两个作用: 1、运⾏并管理Java源码⽂件所⽣成的Class⽂件, 2、在不同的操作系统上安装不同的JVM&#…

长春城乡建设部网站首页百度推广没有效果怎么办

目标 背影 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 代码链接:基于BP神经网络的火焰识别,基于BP神经网络的火灾识别资源-CSDN文库 https://download.csdn.net/download/abc991835105/88215…

郑州网站排名优化学校网站 模板

在数字化的时代,我们经常需要分享、存储或上传各种图像文件,而JPG是其中最常见的图像格式之一。然而,大文件大小有时可能成为一个问题,尤其是在网络传输或存储空间有限的情况下。为了解决这一问题,我们可以利用在线工具…

静态网站可以做哪些什么网站开发客户

打开手机的QQ浏览器说访问网页被禁止&#xff0c;是设置错误造成的&#xff0c;解决方法如下&#xff1a; 1、首先在手机屏幕上左右滑动&#xff0c;找到安装好的QQ浏览器的图标。 <a styleqq浏览器网站禁止访问怎么办 qq浏览器网站禁止访问如何解决"> 2、接下来…

跨境电商信息服务平台有哪些哪些行业适合做seo

js/jQuery常见操作 之 jQuery操作复选框的常见问题 1. js/jQuery的其他一些常见基础操作2. 全选/全不选问题2.1 效果2.2 实现代码2.2.1 简单js实现2.2.2 jQuery实现2.2.2.1 注意语法&#xff08;区别jQuery版本&#xff09;2.2.2.2 完整代码实现 3. jQuery实现点击 行tr 实现ch…

云浮网站建设网站建设框架怎么做

目录 一、传统方式 二、原型模式 三、浅拷贝和深拷贝 克隆羊问题&#xff1a; 现在有一只羊tom&#xff0c;姓名为: tom,年龄为: 1&#xff0c;颜色为: 白色&#xff0c;请编写程序创建和tom羊属性完全相同的10只羊。 一、传统方式 public class Client {public static vo…

公司做网站应记入哪个会计科目表白网页在线生成网站

其实&#xff0c;挺正常的&#xff0c;count的用法大概有两个&#xff0c;不过一般大家不太注意&#xff1a;统计某个列( 俗称字段 )有多少个有效值&#xff0c;也就是值不是null的有多少个。统计记录有多少行&#xff0c;我背诵过的规则是这样的&#xff1a;当count()括弧的表…

网站菜单导航怎么做的建筑工程招标

原标题&#xff1a;嵌入式Linux系统的几大组件&#xff01;本文概述了Linux系统的几大组件&#xff0c;描述了这些组件之间的关系。文章解释了术语&#xff0c;并描述看似很基础的细节。每个Linux系统都有许多主要组件。其中一个组件(引导加载程序)从技术上讲是Linux之外的&…

做视频比较好的理财网站邯郸媒体网络营销诚信合作

国际地球自转和参考坐标系统服务(IERS)在2012年6月30日午夜(北京时间7月1号7点59分59秒)增加一闰秒(即出现7&#xff1a;59&#xff1a;60)。由于Linux kernel 2.6.29之前版本存在bug&#xff0c;在进行闰秒调整时可能会引起系统时钟服务ntpd进程死锁。Debian Lenny、RHEL/Cent…

洛阳建网站山东搜点网站建设

Ora-03113&bsol;Ora-03114与Oracle In 拼接字符串的问题刚深入接触Oracle不久(大学里以及刚参加工作时学到的Oracle知识只能算是皮毛),因为之前使用SqlServer有将近两年的时间,对SqlServer相对来说很熟悉,比较而言,Oracle真心很 ...oracle 数据库 分割字符串返回结果集函数…

制造业网站建设h5可视化开发工具

文章目录 RabbitMQ初识MQ同步和异步通讯同步通讯异步通讯 技术对比 RabbitMq安装RabbitMQ架构RabbitMQ消息模型publisher实现consumer实现总结 SpringAMQPBasic Queue 简单队列模型WorkQueue发布/订阅FanoutDirectTopic 消息转换器 RabbitMQ 初识MQ 同步和异步通讯 微服务间…