04-CompletableFuture异步线程 性能

本文探讨了使用CompletableFuture进行异步编程时的线程池优化。通过实例展示了线程池的优点、构造参数、工具类以及不同场景下的任务调度和性能提升。文章详细分析了如何通过自定义线程池解决性能问题,避免对ForkJoinPool的干扰,并给出了最佳实践。
摘要由CSDN通过智能技术生成

场景

场景

方法

任务少, 不频繁

直接使用线程

任务数稳定,频繁

使用线程池

   

线程池

优点

  • 不用频繁的创建和销毁线程
  • 不需要担心OOM
  • 直接往任务队列添加任务即可
  • 核心线程忙不过来,可以自动增加到最大线程数

构造参数

  • 核心线程数
  • 最大线程数
  • 空闲活跃时长
  • 时长单位
  • 阻塞队列
  • 线程工厂
  • 拒绝策略
    • 直接丢弃
    • 替换最后一个
    • 抛异常
    • 谁提交的任务谁执行
    • --- 自行 扩展

工具类

Executors

方法

描述

newSingleThreadExecutor

创建一个单线程的线程池

newCachedThreadPool

创建一个无上限的线程池(Integer.MAX)

newFixedThreadPool

创建一个固定线程数的线程池

需求

小白和他的朋友门,连续输了10几把游戏, 决定去餐厅吃饭了,3个人,直接点了10盘菜,决定化悲愤为食量

实现

编写代码

先将之前的公共方法抽成一个工具类

package com.dance;

import java.util.StringJoiner;

public class SmallTool {
    /**
     * 休眠方法
     * @param millis 毫秒
     */
    public static void sleep(long millis){
        try {
            Thread.sleep(millis);
        } catch (InterruptedExcep
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值