java线程池

线程池的参数介绍

ThreadPoolExecutor提供了更多的可选参数,可以进⼀步细化线程池⾏为的设定.

 • corePoolSize:正式员⼯的数量.(正式员⼯,⼀旦录⽤,永不辞退)

 • maximumPoolSize:正式员⼯+临时⼯的数⽬.(临时⼯:⼀段时间不⼲活,就被辞退).

 • keepAliveTime:临时⼯允许的空闲时间. 

• unit:keepaliveTime的时间单位,是秒,分钟,还是其他值. 

• workQueue:传递任务的阻塞队列 

• threadFactory:创建线程的⼯⼚,参与具体的创建线程⼯作.通过不同线程⼯⼚创建出的线程相当于 对⼀些属性进⾏了不同的初始化设置.

• RejectedExecutionHandler:拒绝策略,如果任务量超出公司的负荷了接下来怎么处理.

         ◦ AbortPolicy():超过负荷,直接抛出异常.◦ CallerRunsPolicy():调⽤者负责处理多出来的任务.

         ◦ DiscardOldestPolicy():丢弃队列中最⽼的任务.

         ◦ DiscardPolicy():丢弃新来的任务.

线程池的工作流程

• 核⼼操作为submit,将任务加⼊线程池中

 • 使⽤Worker类描述⼀个⼯作线程.使⽤Runnable描述⼀个任务.

 • 使⽤⼀个BlockingQueue组织所有的任务 • 每个worker线程要做的事情:不停的从BlockingQueue中取任务并执⾏.

 • 指定⼀下线程池中的最⼤线程数maxWorkerCount;当当前线程数超过这个最⼤值时就不再新增 线程了.

使用Executors 创建常见的线程池

• 使⽤Executors.newFixedThreadPool(10)能创建出固定包含10个线程的线程池.

 • 返回值类型为ExecutorService

 • 通过ExecutorService.submit可以注册⼀个任务到线程池中.

ExecutorService pool = Executors.newFixedThreadPool(10);
pool.submit(new Runnable() {
 @Override
 public void run() {
 System.out.println("hello");
 }
});

• newFixedThreadPool:创建固定线程数的线程池

 • newCachedThreadPool:创建线程数⽬动态增⻓的线程池.

• newSingleThreadExecutor:创建只包含单个线程的线程池.

• newScheduledThreadPool:设定延迟时间后执⾏命令,或者定期执⾏命令.是进阶版的Timer. Executors本质上是ThreadPoolExecutor类的封装.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值