JAVA后端面试题(持续更新~~~~)
(一)线程池的原理,为什么创建线程池?创建线程池的方式
线程池实现原理:
1.判断线程池中的核心线程是否都在执行任务,如果不是则创建一个新的工作线程来执行任务
2.如果核心线程都在执行任务,则判断任务队列是否已满,如果没满,就将任务存储进任务队列中
3.如果任务队列已满,则判断线程池中的线程是否达到最大线程数量,如果达到则进行相应的拒绝处理策略,否则创建一个新的线程执行任务
为什么创建线程池?
减少线程创建和销毁线程的次数,每个工作线程都可以重复使用
根据系统的承受能力,调整线程池中工作线程的数量,防止因消耗过多内存导致服务器崩溃
创建线程池方式:
public ThreadPoolExecutor(int corePoolSize, //核心线程数量 int maximumPoolSize, //最大线程数量 long keepAliveTime, //空余线程最大存活时间 TimeUnit unit, //存活时间单位 BlockingQueue<Runnable> workQueue, //任务队列 RejectedExecutionHandler handler) //处理策略