线程池

使用线程池的好处:降低资源消耗,提高响应速度,提高线程的可管理性

线程池实现类ThreadPoolExecutor类中提供了四个构造方法
在这里插入图片描述

构造方法参数:
1.线程池的核心线程数量(重要)
2.线程池的最大线程数(重要)
3.当线程池大于核心线程数时,多余的空闲线程存活的最长时间
4.时间单位
5.任务队列,用来存储等待执行的队列(重要)
6.线程工厂,用来创建线程,一般默认即可
7.拒绝策略,当提交的任务过多而进行的即使处理时,我们可以定制策略来处理

shutdown() :关闭线程池,线程池的状态变为 SHUTDOWN。线程池不再接受新任务了,但是队列里的任务得执行完毕。
shutdownNow() :关闭线程池,线程的状态变为 STOP。线程池会终止当前正在运行的任务,并停止理处排队的任务并返回正在等待执行的 List。

几种常见的线程池
1.FixedThreadPool被称为可重用固定线程数的线程池,其实就是创建线程池时核心线程数与最大线程数相等
2.SingleThreadExecutor是只有一个线程的线程池。其实就是创建线程池时核心线程数与最大线程数都为1
3.CachedThreadPool是一个会根据需要创建新线程的线程池,其实就是创建线程池时核心线程数为0,最大线程数为最大值。
4.ScheduledThreadPoolExecutor就是会对队列中的任务进行排序,执行所需时间最短的放在前面先被执行,如果执行所需时间相同则先提交的任务将被先执行。

Runnable与Callable的区别:都是接口,都采用Thread.start()启动线程,Runnable没有返回值;Callable可以返回执行结果,其返回结果是个泛型,和Future、FutureTask配合可以用来获取异步执行的结果。Callable接口的call()方法允许抛出异常;Runnable的run()方法异常只能在内部消化,不能往上继续抛。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值