线程池

线程池ThreadPool:一个是线程的集合,一个是任务的集合指向一个任务队列。

线程池装的是一个个线程执行里边一个个的任务,这个任务放在任务队列里边。

(1)定义ThreadPoolExecutor有7个参数。

分别为:核心线程数、最大线程数、生存时间、时间单位、任务队列、线程工厂(产生线程,线程的名称)、拒绝策略

ThreadPoolExecutor tpe = new ThreadPoolExecutor(2, 4,
        60, TimeUnit.SECONDS,
        new ArrayBlockingQueue<Runnable>(4),
        Executors.defaultThreadFactory(),
        new ThreadPoolExecutor.CallerRunsPolicy());

运行方式:最开始这个线程池里边没有线程,这时来了一个任务起一个线程因为核心线程数还没到所以不用归还再来一个任务再起一个线程也不用归还,当第三个任务来的时候我的核心线程还忙着呢没空理他,加入任务队列。假如任务队列也满了核心线程也忙着执行拒绝策略。

JDK四种拒绝策略:

Abort:抛异常

Discard:扔掉,不抛异常

DiscardOldest:扔掉排队最长的

CallerRuns:调用者处理任务

拒绝策略JDK默认提供了四种但是可以自定义。

调整线程池的大小,虽然有下面的公司进行计算但是也得需要压力测试得出最终的结果。

(2)ForkJoinPool:分解汇总任务,用很少的线程执行很多的任务(子任务)TPE做不到先执行子任务 CPU密集型

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值