线程池相关概述

频繁的创建销毁线程需要时间,所以需要有一种线程复用的方法提高效率,那就是线程池

concurrent

java.util.concurrent包专门处理并发,相关类和接口可以在线程并发的时候使用。
接口Executor是函数式接口,抽象方法为void execute(Runnable command);

这是一个顶层接口,该方法就是用来执行传进去的任务的

java.util.concurrent.ExecutorService

ExecutorService接口继承了Executor接口,并声明了一些方法:submit、invokeAll、invokeAny以及
shutDown等

java.util.concurrent.AbstractExecutorService

抽象类AbstractExecutorService实现了ExecutorService接口

java.util.concurrent.ThreadPoolExecutor
ThreadPoolExecutor继承了类AbstractExecutorService,并进行了扩展

ThreadExecutorService

ThreadPoolExecutor 类中有一个五参构造器

public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) {...}

参数的含义:
corePoolSize ,线程池维护线程的最少数量(核心线程数) maximumPoolSize ,线程池维护线程的最大数量
keepAliveTime ,线程池维护线程所允许的空闲时间
unit ,线程池维护线程所允许的空闲时间的单位(毫秒,秒,…)
workQueue ,线程池所使用的缓冲队列

Executors

java.util.concurrent.Executors ,这个是一个工厂类,可以便捷的帮我们生产出线程池对象,同时该类中也提供了一些实用的工厂方法(静态的)

用完后必须手动关闭线程池

工厂方法1,创建一个定长的线程池,可控制线程最大并发数,超出的线程会在队列中等待,newFixedThreadPool()
工厂方法2,创建一个可缓存的线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,否则新建线程,newCachedThreadPool()
工厂方法3,创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序执行,newSingleThreadExecutor()
工厂方法4,创建一个定长线程池,支持定时及周期性任务执行,newScheduledThreadPool()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值