JDK线程池和Spring线程池的使用实例解析

 更新时间:2019年11月29日 14:36:57   作者:晒太阳的兔子  
这篇文章主要介绍了JDK线程池和Spring线程池的使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了JDK线程池和Spring线程池的使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

JDK线程池和Spring线程池实例,异步调用,可以直接使用

(1)JDK线程池的使用,此处采用单例的方式提供,见示例:

public class ThreadPoolUtil {
	private static int corePoolSize = 5;
	private static int maximumPoolSize = 10;
	private static long keepAliveTime = 60L;
	private static TimeUnit unit = TimeUnit.SECONDS;
	private static int capacity = 1024;
	private static ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("jdk-thread-pool-%d").build();
	private static final ExecutorService executorService = new ThreadPoolExecutor(corePoolSize,
	maximumPoolSize,
	keepAliveTime,
	unit,
	new LinkedBlockingQueue<>(capacity),
	namedThreadFactory,
	new ThreadPoolExecutor.AbortPolicy());
	private ThreadPoolUtil () {
	}
	public static ExecutorService getExecutorService () {
		return executorService;
	}
}

在其它地方可以直接这样使用:

ThreadPoolUtil.getExecutorService().execute(() -> {
	System.out.println("test1");
	System.out.println("test2");
}
)

(2)Spring线程池的使用,此处通过配置类的方式配置线程池的相关属性,见示例:

@Configuration
@EnableAsync
public class DocataThreadBeanConfig {
	private int corePoolSize = 5;
	private int maxPoolSize = 10;
	private int queueCapacity = 1024;
	private String namePrefix = "async-service-task-";
	// 上述属性可以通过@Value来读取配置值
	@Bean(name = "asyncServiceTaskExecutor")
	public TaskExecutor asyncServiceExecutor() {
		ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
		// 设置核心线程数
		executor.setCorePoolSize(corePoolSize);
		// 设置最大线程数
		executor.setMaxPoolSize(maxPoolSize);
		// 设置队列容量
		executor.setQueueCapacity(queueCapacity);
		// 设置线程活跃时间(秒)
		executor.setKeepAliveSeconds(60);
		// 设置默认线程名称
		executor.setThreadNamePrefix(namePrefix);
		// 设置拒绝策略
		executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
		// 等待所有任务结束后再关闭线程池
		executor.setWaitForTasksToCompleteOnShutdown(true);
		executor.initialize();
		;
		return executor;
	}
}

在其它文件中需要这样使用:

@Resource(name="asyncServiceTaskExecutor")
private ThreadPoolTaskExecutor asyncServiceTaskExecutor;

不要直接使用@Autowired,否则会提示失败的

@Autowired
private ThreadPoolTaskExecutor asyncServiceTaskExecutor;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • ThreadPoolExecutor线程池原理及其execute方法(详解)

    ThreadPoolExecutor线程池原理及其execute方法(详解)

    下面小编就为大家带来一篇ThreadPoolExecutor线程池原理及其execute方法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • 解析Java中所有错误和异常的父类java.lang.Throwable

    解析Java中所有错误和异常的父类java.lang.Throwable

    这篇文章主要介绍了Java中所有错误和异常的父类java.lang.Throwable,文章中简单地分析了其源码,说明在代码注释中,需要的朋友可以参考下
    2016-03-03
  • 一文搞懂Java中的抽象类和接口到底是什么

    一文搞懂Java中的抽象类和接口到底是什么

    在类中没有包含足够的信息来描绘一个具体的对象,这样的类称为抽象类,接口是Java中最重要的概念之一,它可以被理解为一种特殊的类,不同的是接口的成员没有执行体,是由全局常量和公共的抽象方法所组成,本文给大家介绍Java抽象类和接口,感兴趣的朋友一起看看吧
    2022-04-04
  • Java微信支付之关闭订单

    Java微信支付之关闭订单

    这篇文章主要为大家详细介绍了Java微信支付之关闭订单,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • Springboot整合mybatis开启二级缓存的实现示例

    Springboot整合mybatis开启二级缓存的实现示例

    在一级缓存中,是查询两次数据库的,显然这是一种浪费,既然SQL查询相同,就没有必要再次查库了,直接利用缓存数据即可,这种思想就是MyBatis二级缓存的初衷,本文就详细的介绍了Springboot整合mybatis开启二级缓存,感兴趣的可以了解一下
    2022-05-05
  • Java多线程中的Callable和Future详解

    Java多线程中的Callable和Future详解

    这篇文章主要介绍了Java多线程中的Callable和Future详解,创建线程的两种方式,一种是直接继承Thread,另外一种就是实现Runnable接口,本文提供了部分代码,需要的朋友可以参考下
    2023-08-08
  • java实现轻量型http代理服务器示例

    java实现轻量型http代理服务器示例

    这篇文章主要介绍了java实现轻量型http代理服务器示例,需要的朋友可以参考下
    2014-04-04
  • 关于 Math.random()生成指定范围内的随机数的公式推导问题

    关于 Math.random()生成指定范围内的随机数的公式推导问题

    在 java 中,用于生成随机数的 Math 方法 random()只能生成 0-1 之间的随机数,而对于生成指定区间,例如 a-b 之间的随机数,却只能用相关计算公式,今天通过本文给大家介绍Math.random()生成随机数的公式推导问题,感兴趣的朋友一起看看吧
    2022-09-09
  • Java Hutool工具包中HttpUtil的日志统一打印及统一超时时间配置

    Java Hutool工具包中HttpUtil的日志统一打印及统一超时时间配置

    Hutool是一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,这篇文章主要给大家介绍了关于Java Hutool工具包中HttpUtil的日志统一打印及统一超时时间配置的相关资料,需要的朋友可以参考下
    2024-01-01
  • 浅谈spring的重试机制无效@Retryable@EnableRetry

    浅谈spring的重试机制无效@Retryable@EnableRetry

    这篇文章主要介绍了浅谈spring的重试机制无效@Retryable@EnableRetry,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09

最新评论