java创建线程池的几种方式_定时任务 java

java创建线程池的几种方式_定时任务 java有时候有些需求不需要顺序执行,所以我就使用了多线程并行执行。废话不多说,上代码。1.创建线程池packageorg.java.multithreading;importorg.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;importorg.springframework.context.annotation.Configuration;importorg.springframework.scheduling.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

有时候有些需求不需要顺序执行,所以我就使用了多线程并行执行。废话不多说,上代码。

1.创建线程池

package org.java.multithreading;

import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;

import java.util.concurrent.Executor;


@Configuration
@EnableAsync
public class AsyncTaskConfig implements AsyncConfigurer { 
   

    // ThredPoolTaskExcutor的处理流程
    // 当池子大小小于corePoolSize,就新建线程,并处理请求
    // 当池子大小等于corePoolSize,把请求放入workQueue中,池子里的空闲线程就去workQueue中取任务并处理
    // 当workQueue放不下任务时,就新建线程入池,并处理请求,如果池子大小撑到了maximumPoolSize,就用RejectedExecutionHandler来做拒绝处理
    // 当池子的线程数大于corePoolSize时,多余的线程会等待keepAliveTime长时间,如果无请求可处理就自行销毁
    @Override
    public Executor
    getAsyncExecutor() { 
   
        // 新建一个任务执行器
        ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
        taskExecutor.setCorePoolSize(6);// 设置最小的线程数量
        taskExecutor.setMaxPoolSize(10);// 设置最大的线程数量
        taskExecutor.setQueueCapacity(25);// 等待队列
        taskExecutor.initialize();// 初始化
        return taskExecutor;
    }

    @Override
    public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() { 
   
        return null;
    }
}

2.线程池的参数

1.corePoolSize 线程池核心线程大小
2.maximumPoolSize 线程池最大线程数量
3.keepAliveTime 空闲线程存活时间
4.unit 空间线程存活时间单位
5.workQueue 工作队列
6.threadFactory 线程工厂
7.handler 拒绝策略

3.使用

只需要在接口上加上@Async 注解就能使用了。

@Async
public void task() throws IOException { 
   

}

@Async 注解

@Async的value属性可以指定执行线程池,当其被标注在类或者方法上,用于实现方法的异步执行,当被标注在类上,表明类中的所有方法都被指定的异步执行器执行。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187102.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux安装networkmanager_centos配置网络

    linux安装networkmanager_centos配置网络写在前面嗯,准备RHCA,学习整理这部分知识NetworkManager其实是RHCAS的内容博文内容为常见的配置操作回顾:NetworkManager简述命令行的方式配置网络连接修改配置文件的方式配置网络连接谁有权限修改网络连接配置傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。——–王小波红帽8(rhel8,Centos8)使用的网络管理服务

    2022年10月4日
    0
  • css元素分类

    css元素分类

    2022年3月3日
    38
  • 从零搭建SpringCloud服务(史上最详细)

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:Anakki blog.csdn.net/qq_29519041/article/details/852382…

    2021年6月27日
    110
  • 从零到一搭建一个属于自己的博客系统(弎)「建议收藏」

    从零到一搭建一个属于自己的博客系统(弎)「建议收藏」前言:结合上文讲到了博客发布,本篇文章进行对于个人的信息进行一系列操作:从零到一搭建一个属于自己的博客系统(弌):从零到一搭建一个属于自己的博客系统(弌)从零到一搭建一个属于自己的博客系统(弍):从零到一搭建一个属于自己的博客系统(弍)目录:一.界面元素:二.个人中心:1.页面部分以及HTML:2.CSS:3.效果图:4.js:三.Django接口:1.修改密码(update):2.忘记密码(see):3.日志查看(seemsg):4.日志写入(usermsg):四.补充:五.换肤:一.界面元素:

    2022年10月11日
    0
  • win10-linux双系统安装教程

    win10-linux双系统安装教程需要的工具UltralSO:制作启动盘DiskGenius:划分磁盘空间EasyUEFI:修改启动引导,Windows自带引导不能修改,因此要用Linux的引导(一般默认就是linux的)1、制作启动U盘用UltralSO做,教程很多2、划分磁盘空间用DiskGenius将匀出一块空间做linux系统空间100MBESP分区8GB交换分区自定义容量:根目录分区自定义容量:\home分区3、安装系统U盘启动,安装操作系统4、修改启动顺序…

    2022年7月24日
    8
  • TinyXML2使用总结「建议收藏」

    TinyXML2使用总结「建议收藏」TinyXML2是简单实用的开源的C++XML文件解析库,可以很方便的应用到现有的项目之中。 TinyXML2解析器相对TinyXML1在代码上是完全重写,使其更适合于游戏开发中使用。它使用更少的内存,更快,并使用更少的内存分配。xml类似数据库,一般来说对数据库有什么操作,那么对xml文件也能实现什么操作。数据库增删查改对应xml文件就是新建xml文件…

    2022年5月11日
    29

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号