jdk单例线程池和sping线程池使用

本文探讨了Java原生线程池与Spring线程池的区别,Spring的ThreadPoolTaskExecutor是对JDK ThreadPoolExecutor的封装,便于配置和管理。建议在有Spring环境时使用Spring线程池,而原生线程池适用于没有特定框架需求的场景。遵循阿里巴巴编程规范,提倡使用线程池以优化资源管理和避免过度切换问题。
摘要由CSDN通过智能技术生成

       java提供的原生线程池技术处理原理很清晰,故只要使用自己的原生线程池技术一般都能满足项目的需求。java提供了很好的线程池实现,比我们自己的实现要更加健壮以及高效,同时功能也更加强大,不建议自己编写。另外有同学可能用过spring的线程池,那么spring线程池和jdk原生线程池有啥区别吗?我们查看源码和官方api可以知道SpringFrameWork 的 ThreadPoolTaskExecutor 是辅助 JDK 的 ThreadPoolExecutor 的工具类,它将属性通过 JavaBeans 的命名规则提供出来,方便进行配置。也就是说spring的包装了一下jdk,其实底层都是jdk的线程池。如果项目中有spring框架,建议使用spring的线程池(毕竟和环境一起,线程池的生命周期可以让spring容器来管理,当然啦,也可以使用原生的jdk线程池),如果没有其他要求,建议使用原生jdk线程池。

阿里巴巴的编程规范建议也是有异曲同工之妙的说法:

【强制】线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。
说明:使用线程池的好处是减少在创建和销毁线程上所花的时间以及系统资源的开销,解决资源不足的问题。如果不使用线程池,有可能造成系统创建大量同类线程而导致消耗完内存或者“过度切换”的问题。

1、原生jdk线程池单例使用

import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * 线程池管理(线程统一调度管理)
 */
public final class ThreadPoolManager {

	private static ThreadPoolManager sThreadPoolManager = new ThreadPoolManager();

	// 线程池维护线程的最少数量
	private static final int SIZE_CORE_POOL = 15;

	// 线程池维护线程的最大数量
	private static final int SIZE_MAX_POOL = 15;

	/*
	 * 线程池单例创建方法
	 */
	public static ThreadPoolManager newInstance() {
		return sThreadPoolMana
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值