为什么要使用线程池?
缺乏对线程的统一管理,系统资源过多,缺少更多的功能,比如定期执行、定期执行等。使用线程池的好处:
重用现有线程,降低对象的创建和死亡成本,有效控制最大并发数,提高系统资源利用率。定期执行线程池所在的包:java.util.concurrent
顶层接口是Executor,真正的线程池接口是Executor service[它们是继承的]
抽象执行服务实现类实现了前面的方法。
java.util.concurrent.Executors类提供了一种创建线程池的静态方法。
ScheduledExecutorService中的方法:
调度固定日期(可运行命令,长初始时间,长周期,时间单位单位)
命令:要执行的任务
InitialDelay:延迟第一次执行时间。
期间:连续执行之间的期间。
单位:初始延迟和周期参数的时间单位。
scheduleWithFixedDelay(可运行命令,长初始延迟,长延迟,时间单位单位)
命令:要执行的任务
InitialDelay:延迟第一次执行时间。
延迟:一次执行结束到下一次执行开始之间的延迟。
单位:初始延迟和延迟参数的时间单位。
线程池执行器类:
构造函数中每个参数的含义:
CorePoolSize:核心池的大小(线程池中核心线程的数量)maximumPoolSize:线程池中线程的最大数量(不能超过)keepAliveTime:表示没有任务执行时线程可以停留的时间。单位:参数keepAliveTime工作队列的时间单位:阻塞队列,用于存储要执行的任务。threadFactory: Thread factory,主要用于创建线程处理程序:表示拒绝处理任务时的策略(销毁数据)。