java手动实现单个线程的线程池

在平常开发中,一般我们会用到多线程的线程池ThreadPoolExecutor因为线程的创建和销毁是需要开销的,所以在执行一些特定的代码的时候会用到线程池。
 
Java中给我们提供了Executors工具类,提供了四种线程的方案:
  1. Executors.newCachedThreadPool();
  2. Executors.newSingleThreadExecutor();
  3. Executors.newScheduledThreadPool();
  4. Executors.newFixedThreadPool();
虽然上面的线程池是java提供的,但是并不适合我们使用:阿里巴巴java开发手册强制不能使用上面四种方式
 

而推荐使用的ThreadPoolExecutor才是线程池的本来面目:

通过源码学习:线程池的构造方法:

 

我们从源码可以看出,虽然线程池有几个构造方法,但是最终都是调用了自己7个参数的构造方法:

参数定义:

  1. corePoolSize //核心线程数,也可以理解无论什么时候的线程池线程数都不会少于该数
  2. maximumPoolSize //最大线程数,就是线程池线程数的最大值
  3. keepAliveTime //线程被销毁空闲时间
  4. unit    // keepAliveTime的时间单位
  5. workQueue   //线程最大化是的多余任务存放的队列
  6. threadFactory   //线程工厂
  7. handler  //当队列满时,新任务的拒绝策略

当我们足够了解线程池就可以手动实现一个线程池了,因功能需求,我实现了一个有界的单线程的单线程的线程池:

 

首先定义线程池所需属性

在构造方法实例化属性值

根据属性去创建线程池:

最后外部通过实例该类,即可调用该线程池对象

 
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值