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

小程序企业网站如何建立公司网站是什么

小程序企业网站,如何建立公司网站是什么,it网站设计培训,简单炫酷的网站在异步任务执行的时候#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.zqtcl.cn/news/613918/

相关文章:

  • 合作社网站模板贵州安顺建设主管部门网站
  • 网站不备案能访问吗哪家做企业网站
  • 做网站写的代号好跟不好的区别企信网企业信用信息系统
  • 网站需要服务器吗手机网站解决方案
  • 网站子网页怎么做国外网站 模板
  • 手机评测网站标志设计分析
  • 网页游戏网站建设成都公司网站
  • 网站流量统计分析的误区wordpress二级目录安装
  • 深互动平台网站wordpress后台无法访问
  • 建立网站需要服务器吗网站建设辶首先金手指十四
  • 做的成功的地方网站办公室工装设计公司
  • 怎样添加网站上百度商桥代码网站建设实验报告手写
  • 江阴做网站优化辽宁世纪兴电子商务服务中心
  • 最新创建的网站搭建网站的平台有哪些
  • 全国房地产网站企管宝app下载
  • 无线网络网站dns解析失败南通模板建站多少钱
  • h5手机网站建设哪家好北京海淀房管局网站
  • 制作一个简单的网站冬奥会网页设计代码
  • 如何做网站 百度西充建设部门投诉网站
  • 怎么创建自己的博客网站网站优化主要内容
  • 太原网站建设推广建设网站观澜
  • 网站开发员名称是什么网站制作教程及流程
  • 建设财经资讯网站的目的移动端网站模板怎么做的
  • 受欢迎的赣州网站建设青岛建站
  • 青海网站制作哪家好烟台龙口网站建设
  • 婚恋网站排名前十名网站建设的论坛
  • 进行网站建设有哪些重要意义上海浦东建筑建设网站污水处理工程
  • 自己做qq代刷网站要钱吗瑞安网站建设优化推广
  • 建设网站招标定制高端网站建设报价
  • 商城网站建设code521广州安全教育平台登录入囗