在网站接入银联怎么做,网站开发课程软件,开源社区的发展前景,山南网站建设参考#xff1a;Java 线程池最佳实践 | JavaGuide 使用构造函数创建线程池。【使用有界队列#xff0c;控制线程创建数量】 SpringBoot 中的 Actuator 组件 / ThreadPoolExecutor 的相关 API监控线程池运行状态 是不同的业务使用不同的线程池【父子任务用同一个线程池容易死…
参考Java 线程池最佳实践 | JavaGuide 使用构造函数创建线程池。【使用有界队列控制线程创建数量】 SpringBoot 中的 Actuator 组件 / ThreadPoolExecutor 的相关 API监控线程池运行状态 是不同的业务使用不同的线程池【父子任务用同一个线程池容易死锁】重心优化系统性能瓶颈相关的业务 初始化线程池的时候需要显示命名设置线程池名称前缀有业务含义【 guava 的 ThreadFactoryBuilder / 自己实现 ThreadFactory】 正确配置线程池参数。(线程数太大增加上下文切换消耗)。【美团的线程池参数动态配置】 显式地关闭线程池释放线程资源。awaitTermination同步等待【需要设置超时时间以及捕捉异常避免程序崩溃或者无法正常退出。】。showdown / showdownNow异步。 避免将耗时任务提交到线程池中执行(会频繁创建线程)。【如网络请求、文件读写等可以采用异步操作的方式来处理】 线程池是可以复用的一定不要频繁创建线程池 使用 Spring 内部线程池ThreadPoolTaskExecutor 时一定要手动自定义线程池配置合理的参数不然会出现生产问题一个请求创建一个线程 线程池和 ThreadLocal共用可能会导致线程从ThreadLocal获取到的是旧值/脏数据。【阿里巴巴开源的 TransmittableThreadLocal(TTL)---提供ThreadLocal值的传递功能解决异步执行时上下文传递的问题】