1.线程池有什么作用
降低资源消耗:通过池化技术重复利⽤已创建的线程,降低线程创建和销毁造成的损耗。 提⾼响应速度:任务到达时,⽆需等待线程创建即可⽴即执⾏。 提⾼线程的可管理性:线程是稀缺资源,如果⽆限制创建,不仅会消耗系统资源,还会因为线程的不合理分布 导致资源调度失衡,降低系统的稳定性。使⽤线程池可以进⾏统⼀的分配、调优和监控。 提供更多更强⼤的功能:线程池具备可拓展性,允许开发⼈员向其中增加更多的功能。⽐如延时定时线程池 ScheduledThreadPoolExecutor,就允许任务延期执⾏或定期执⾏。
2.怎么创建线程池
通过线程工厂指定线程名称前缀
PriorityBlockingQueue<TestA> queue = new PriorityBlockingQueue<>();queue.add(new TestA());queue.add(new TestA());ThreadFactory threadFactory=new TaskThreadFactory("prefix",true,1);ThreadPoolExecutor executor = new ThreadPoolExecutor(2, 4, 100, TimeUnit.MILLISECONDS,new LinkedBlockingDeque<>(), threadFactory);while (!queue.isEmpty()){executor.submit(queue.poll());}
3.线程池参数都代表什么意思
corePoolSize核心线程数 maximumPoolSize 最大线程数 keepAliveTime 持续连接时间 TimeUnit 单位 workQueue 队列 threadFactory 线程工厂 handler 拒绝策略
当线程任务过多时,会创建核心线程数,当核心线程处理不过来时,创建最大线程数,若超过最大线程数则放入队列中,若队列放不下则进行拒绝策略,拒绝访问。
线程池执行流程
线程池任务缓冲队列详情
任务拒绝策略