对线程池简单理解
线程池的好处: 1,因为线程是比较昂贵的资源,避免大量重复创建销毁线程,使用者不用关心创建销毁线程。 2,用户提交的任务能够及时的得到处理,提高响应速度。 3,能够更好的监控和管理线程。 ThreadPoolExecutor参数 int corePoolSize 线程池基本大小 int maximumPoolSize 线程池最大大小 long keepAliveTime 保持活动时间 TimeUnit unit 保持活动时间单位 BlockingQueue workQueue 工作队列 ThreadFactory threadFactory 线程工厂 RejectedExecutionHandler handler 驳回回调 这些参数这样描述起来很空洞,下面结合执行任务的流程来看一下。 ThreadPoolExecutor执行任务流程 当线程池大小 >= corePoolSize 且 队列未满时,这时线程池使用者与线程池之间构成了一个生产者-消费者模型。线程池使用者生产任务,线程池消费任务,任务存储在BlockingQueue中,注意这里入队使用的是offer,当队列满的时候,直接返回false,而不会等待。 keepAliveTime 当线程处于空闲状态时,线程池需要对它们进行回收,避免浪费资源。但空闲多长时间回收呢,keepAliveTime就是用来设置这个时间的。默认情况下