1 java 创建线程的方式
1 继承Thread类 重写run方法 创建的线程不共享资源
2 实现Runnable 接口 重写run方法 创建的线程共享资源
3 实现Callable<T> 接口,再使用FutureTask<>封装Callable<T>的对象,这个方式创建的线程共享资源,可以捕获异常,可以有返回值。
3.5可以直接用Exectuors工厂类来创建线程池
4 本项目使用ThreadPoolTaskExecutor
线程池的配置:
执行情况:
参数是一个自定义的类,实现了Runnable 接口
拒绝策略种类:
rejectedExectutionHandler参数字段用于配置绝策略,常用拒绝策略如下
AbortPolicy:用于被拒绝任务的处理程序,它将抛出RejectedExecutionException
CallerRunsPolicy:用于被拒绝任务的处理程序,它直接在execute方法的调用线程中运行被拒绝的任务。
DiscardOldestPolicy:用于被拒绝任务的处理程序,它放弃最旧的未处理请求,然后重试execute。
DiscardPolicy:用于被拒绝任务的处理程序,默认情况下它将丢弃被拒绝的任务。
处理流程
1.查看核心线程池是否已满,不满就创建一条线程执行任务,否则执行第二步。
2.查看任务队列是否已满,不满就将任务存储在任务队列中,否则执行第三步。
3.查看线程池是否已满,即就是是否达到最大线程池数,不满就创建一条线程执行任务,否则就按照策略处理无法执行的任务。