现在的位置: 首页 > 编程语言 > 正文

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

2020年02月13日 编程语言 ⁄ 共 2030字 ⁄ 字号 评论关闭

这篇文章主要介绍了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@EnableAsyncpublic 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,否则会提示失败的

@Autowiredprivate ThreadPoolTaskExecutor asyncServiceTaskExecutor;

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

本文标题: JDK线程池和Spring线程池的使用实例解析

以上就上有关JDK线程池和Spring线程池的使用实例解析的相关介绍,要了解更多jdk,线程池,spring内容请登录学步园。

抱歉!评论已关闭.