多线程实现方式
1、继承thread类,重写run();方法。业务内容就是run();代码块
2、实现Runable,重写run();方法。业务内容就是run();代码块;无返回值
3、实现callable,重写run();方法。业务内容就是run();代码块;有返回值,且可以抛出异常
4、禁止使用Executors去创建线程池,自己去创建ThreadPoolExecutor,
原因:
FixedThreadPool和SingleThreadExecutor => 允许的请求队列长度为Integer.MAX_VALUE,可能会堆积大量的请求,从而引起OOM异常
CachedThreadPool => 允许创建的线程数为Integer.MAX_VALUE,可能会创建大量的线程,从而引起OOM异常
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler)
corePoolSize => 线程池核心线程数量
maximumPoolSize => 线程池最大数量
keepAliveTime => 空闲线程存活时间
unit => 时间单位
workQueue => 线程池所使用的缓冲队列t
hreadFactory => 线程池创建线程使用的工厂
handler => 线程池对拒绝任务的处理策略

被折叠的 条评论
为什么被折叠?



