线程池的学习

1.线程池的优点:

重用存在的线程,减少对象的创建,消亡的开销,性能佳

可有效控制最大的并发线程数,提高系统资源的利用率,同时可以避免过多的资源竞争,避免阻塞

提供定时执行,定期执行,单线程并发控制等功能

2,corePoolSize:核心线程数量

 maximumPoolSize:线程池最大 的线程数

workQueue:阻塞队列,存储等待执行的任务,很重要,会对线程池的运行产生重大的影响

keepAliveTime:线程池没有任务执行的时候最多保持的多久时间可以停止

unit:keepAliveTime 的时间单位

threadFactory:线程工厂,用来创建线程

rejectHandler:当拒绝任务的时候的策略

  策略一般一共有四种:

    1)抛出异常

  2)用调用者所在的线程执行任务

 3)丢弃队列中最靠前的任务来执行该任务

4)丢弃该任务

3.线程的状态一共有

 running------> (通过调用用shutdown()方法)  shutDown / (通过调用shutDownNow()方法   stop) ------->(当阻塞队列为空的时候,线程池中的线程工作数量为零)tidying ------>(调用terminate()方法 )terminated

4.线程池中的方法都有哪些

 execute() 提交任务,交给线程池执行

submit()  提交任务,能够返回执行结果

 shutdown() 关闭线程池,等待任务都执行完毕

shutdown() 关闭线程池,不等待任务执行完毕

5.线程池-----监控方法  (ThreadPoolExecutor)

  getTaskCount()  线程池已执行和未执行的任务总数

  getCompletedTaskCount() 已完成的任务数量

 getPoolSize()线程池当前的线程数量

 getActiveCount():当前线程池中正在执行的任务的线程的数量

6.Executor框架接口 (这个里面实现的都是ThreadPoolExecutor)

 1).可以提供缓存的线程池

Executors.newCachedThreadPool();

2).提供定长的线程池,控制线程最大的并发数

Executors.newFixedThreadPool();

 3).提供定长的线程池,支持定时以及周期性的任务执行

Executors.newScheduledThreadPool();

 联想到定时器Timer:定时执行任务

Timer timer = new Timer();
timer.schedule(new TimerTask(){
      public void run(){
        System.out.println("time run");
     }
}

4).提供单一的线程,保证所有的任务按照指定的顺序(FIFO,LRU方式)

Executors.newSingleThreadExecutor();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值