spring自带线程池+6种常见线程池的小白理解


一种spring自带线程池
springBoot自带执行器:ThreadPoolTaskExecutor
使用方法:
    config
        类上:添加注解@EnableAsync
        方法上:@Bean 
    service层
        方法上:@Async("asyncServiceExecutor") 即可

六种常见的线程池:

1、FixedThreadPool;
    有活了雇一个人,最多雇10个人,轮流搬箱子,没活了就呆着,日工

2、CachedThreadPool;
    有个总管,来活了,指派给一个人,如果没有人就雇人后再指派,没活了( 60 秒后)就辞退,再来活了再招,分钟工

3、ScheduledThreadPool;
    0、ScheduledExecutorService service = Executors.newScheduledThreadPool(10);

    1、service.schedule(new Task(), 10, TimeUnit.SECONDS);
        延迟10秒执行一次。
        预约1天后安排一个人干活,什么时候干完什么时候走人,
        包工
        
    2、service.scheduleAtFixedRate(new Task(), 10, 10, TimeUnit.SECONDS);
        延迟10秒执行一次,后期每10秒执行一次。
        预约1天后安排一个人干活,以后每小时安排个活,
        长期工,明天入职后,不管死活入职后每间隔小时都安排任务
    
    3、service.scheduleWithFixedDelay(new Task(), 10, 10, TimeUnit.SECONDS);
        延迟10秒执行一次,执行完成后每10秒再执行一次。
        预约1天后安排一个人干活,干完活以后10秒再安排个活。
        国企,明天入职后,每次完成任务后休息1个小时再安排新任务
    
4、SingleThreadExecutor;
    垄断,关系户,不允许共同工作,有活了一个人慢慢干
    
5、SingleThreadScheduledExecutor;
    类似于垄断的工地3
    
6、ForkJoinPool;JDK 7 
    1、队列任务分裂n个任务处理,再从n中取,n个任务处理完成后再合并完成一个线程的任务
    2、线程之间互相帮助,每个线程的n个任务存放于双端队列 deque,
    双端队列很好地平衡了各线程的负载
    甲乙两个民工吃饭
    每个人吃(n个任务)一个馒头、4个菜、一个鸡腿
    甲刚吃馒头,乙已经吃完了,偷了甲的鸡腿

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值