java线程池概述

概述

​ 实现对线程复用的技术,不用多次创建线程

获得线程池对象

​ 1.使用ExecutorService的实现类ThreadPoolExecutor自创建一个线程对象。

​ 2.使用Executors(线程池的工具类)调用方法返回不同特点的线程池对象

ThreadPoolExcutor构造器的参数

public ThreadPoolExecutor(int corePoolSize,
                          int maximumPoolSize,
                          long keepAliveTime,
                          TimeUnit unit,
                          BlockingQueue<Runnable> workQueue,
                          ThreadFactory threadFactory,
                          RejectedExecutionHandler handler) 

  1. corePoolSize:指定线程池的核心线程数量
  2. maximumPoolSize:指定线程池可支持的最大线程数
  3. keepAliveTime:指定临时线程的最大存活时间
  4. unit:指定存活时间的单位(秒,分,时,天)
  5. workQueue:指定任务队列
  6. threadFactory:指定用哪个线程工厂创建线程
  7. handler:当线程全部激活,且任务队列已满,对于新任务的处理方式

向线程池添加任务

​ 1.Runnable接口

​ 使用excute方法提交实例化的实现类

​ 2.Callable接口

​ 使用submit方法提交经过Futur处理过的实现类

新任务拒绝策略

策略详解
ThreadPoolExecutor.AbortPolicy丢弃任务并抛出RejectedExecutionException异常。是默认的策略
ThreadPoolExecutor.DiscardPolicy:丢弃任务,但是不抛出异常 这是不推荐的做法
ThreadPoolExecutor.DiscardOldestPolicy抛弃队列中等待最久的任务 然后把当前任务加入队列中
ThreadPoolExecutor.CallerRunsPolicy由主线程负责调用任务的run()方法从而绕过线程池直接执行

ExecutorService的常用方法

方法名称说明
void execute(Runnable command)执行任务/命令,没有返回值,一般用来执行 Runnable 任务
Future submit(Callable task)执行Callable任务,返回未来任务对象获取线程结果
void shutdown()等任务执行完毕后关闭线程池
List( shutdownNow()立刻关闭,停止正在执行的任务,并返回队列中未执行的任务
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值