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

网站建设经营范围怎么写网站 只做程序员

网站建设经营范围怎么写,网站 只做程序员,永州建设学校官方网站,创建一个网站的费用一、核心实现方案 1. 线程池配置与异步支持 通过 EnableAsync 启用异步支持,并自定义线程池避免默认线程池的性能问题: Configuration EnableAsync public class AsyncConfig {Beanpublic Executor taskExecutor() {ThreadPoolTaskExecutor executor …

一、核心实现方案

1. 线程池配置与异步支持

通过 @EnableAsync 启用异步支持,并自定义线程池避免默认线程池的性能问题:

@Configuration
@EnableAsync
public class AsyncConfig {@Beanpublic Executor taskExecutor() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();executor.setCorePoolSize(5);    // 根据业务负载调整executor.setMaxPoolSize(10);    // 突发流量缓冲executor.setQueueCapacity(100); // 防止 OOMexecutor.setThreadNamePrefix("DB-Async-");executor.initialize();return executor;}
}

关键点
• 线程池隔离避免资源竞争(如 IO 密集型与 CPU 密集型任务分开)
• 拒绝策略需根据业务场景定制(如日志记录或降级处理)


2. 服务层异步方法封装

通过 @Async 注解将数据库查询封装为异步任务:

@Service
public class AsyncQueryService {@Autowiredprivate UserRepository userRepo;@Asyncpublic CompletableFuture<List<User>> queryUsers() {return CompletableFuture.supplyAsync(userRepo::findAll);}@Asyncpublic CompletableFuture<List<Order>> queryOrders() {return CompletableFuture.supplyAsync(orderRepo::findAll);}
}

关键点
@Async 方法需定义在独立 @Service 类中(Spring 代理机制限制)
• 返回 CompletableFuture 以实现链式编排


3. 控制层任务编排与结果合并

使用 CompletableFuture.allOf() 实现任务同步等待,并通过 join() 提取结果:

@RestController
public class DataController {@Autowiredprivate AsyncQueryService asyncService;@GetMapping("/parallel-query")public ResponseEntity<Map<String, Object>> parallelQuery() {CompletableFuture<List<User>> usersFuture = asyncService.queryUsers();CompletableFuture<List<Order>> ordersFuture = asyncService.queryOrders();CompletableFuture.allOf(usersFuture, ordersFuture).join(); // 阻塞等待Map<String, Object> result = new HashMap<>();result.put("users", usersFuture.join());result.put("orders", ordersFuture.join());return ResponseEntity.ok(result);}
}

关键点
allOf().join() 会阻塞主线程直至所有任务完成
• 生产环境需添加超时控制(如 orTimeout(5, SECONDS)


二、高级优化策略

1. 动态数据源管理

若查询涉及多个数据库(如 MySQL 和 SQL Server),需配置多数据源:

# application.yml
spring:datasource:dynamic:primary: mysqldatasource:mysql:url: jdbc:mysql://localhost:3306/db1sqlserver:url: jdbc:sqlserver://localhost:1433;databaseName=db2

结合 ThreadLocalAbstractRoutingDataSource 实现动态切换:

public class DynamicDataSource extends AbstractRoutingDataSource {@Overrideprotected Object determineCurrentLookupKey() {return DataSourceContextHolder.getDataSource(); // 从ThreadLocal获取数据源标识}
}

2. 结果合并与链式编程

使用 thenCombine() 优化结果合并逻辑:

CompletableFuture<CombinedResult> combinedFuture = usersFuture.thenCombine(ordersFuture, (users, orders) -> new CombinedResult(users, orders));

优势
• 避免嵌套回调,提升代码可读性
• 支持异常传递与统一处理


3. 事务与一致性保障

在异步任务中管理事务需注意:
• 默认 @Async 方法不在事务上下文中执行,需显式配置 @Transactional
• 多数据源场景需为每个数据源单独配置事务管理器


三、性能与异常处理

1. 线程池监控

通过 ThreadPoolTaskExecutor 方法监控:

int activeCount = executor.getActiveCount(); // 活跃线程数
int queueSize = executor.getQueue().size();  // 队列堆积情况
2. 异常兜底策略
usersFuture.exceptionally(ex -> {log.error("用户查询失败", ex);return Collections.emptyList(); // 返回降级结果
});

四、适用场景对比

方案适用场景优点限制
@Async + CompletableFuture简单查询并行化代码简洁,Spring 原生支持事务管理复杂
ExecutorService需精细控制线程池或非 Spring 环境灵活性高需手动管理生命周期
JDBC 异步 API低延迟、高吞吐场景无框架依赖需数据库驱动支持

通过上述方案,原本串行的多个数据库查询可并行执行,总耗时由最慢的查询决定,而非各查询耗时的累加。实际应用中需根据数据量、数据库负载和业务一致性要求选择合适的实现方式。

http://www.dtcms.com/wzjs/560057.html

相关文章:

  • win7 做网站好吗百度总部
  • 阿里云搭建网站教程水果网络营销策划书
  • 网页设计类网站网站招生宣传怎么做
  • 内江 网站建设wordpress对接微信
  • 青岛做公司网站注册的多吗靓号注册网站免费
  • 万户网络做网站网络课程网站模板
  • 可以免费发帖的网站如何建立个人免费网站
  • 群晖wordpress搭建网站公司网站上线的通知
  • 达州城乡建设网站如何对网站进行维护
  • 后端网站开发个人视频制作公司
  • 做网站选什么配置电脑网上学学网站开发工程师
  • 新网站不被收录的原因工商执照注册号查询网
  • 设计软件免费下载官方网站家装设计效果图网站
  • 名师工作室建设网站推广网络平台
  • 网站建设步骤详解视频品牌营销策划怎么写
  • 东莞网站建设发外链平台
  • 有没有专门做ppt的网站wordpress获取文章地址
  • 做网站的基本知识网站排名优化原理
  • 网站免费打包ios海尔建设此网站的目的是什么意思
  • 网站建设重要新支持wordpress空间
  • 网站排名优化策划wordpress注释
  • 营销型网站建设大概多少钱网站设计分享
  • 网站建设 东方网景wordpress弹窗登录
  • win7iis配置网站淘宝网网站建设的的意见
  • 做网站一个月工资表白软件生成器
  • 如何策划电子商务的网站建设揭阳设计公司
  • 灌云县城乡建设局网站wordpress换网址图片打不开
  • 个人免费网站建设教程重庆整站优化的电话销售
  • 网站开发毕设参考文献个人网站备案能做什么内容
  • 单页面网站做排名网站开发需要注意什么