ThreadPoolExecutor tPool=new ThreadPoolExecutor(
2, //corePoolSize(核心线程数)
5, //maximumPoolSize(最多线程数)
1, //keepAliveTime空闲时间,针对核心线程以外的线程有效
TimeUnit.SECONDS,//unit时间单位
workQueue); //workQueue队列
当我们创建好线程池以后,池中默认是没有线程的。
当我们执行任务时,首先会检测池中有没有线程,线程数量有没有达到核心线程数。
假如线程数量没有达到核心线程数,则每次执行任务都会创建一个新的线程,一直到线程数量达到
核心线程数,当再次执行任务时,假如池中线程数量已经达到corePoolSize这个值,并且所有的线程
都在忙,此时这个任务会存储到任务队列,等核心线程空闲时执行。
假如此时任务队列也满了,再来了新的任务,此时会创建新的线程,当我们线程数量达到maximumPoolSize
这个值时,再来了新的任务则拒绝处理。
2, //corePoolSize(核心线程数)
5, //maximumPoolSize(最多线程数)
1, //keepAliveTime空闲时间,针对核心线程以外的线程有效
TimeUnit.SECONDS,//unit时间单位
workQueue); //workQueue队列
当我们创建好线程池以后,池中默认是没有线程的。
当我们执行任务时,首先会检测池中有没有线程,线程数量有没有达到核心线程数。
假如线程数量没有达到核心线程数,则每次执行任务都会创建一个新的线程,一直到线程数量达到
核心线程数,当再次执行任务时,假如池中线程数量已经达到corePoolSize这个值,并且所有的线程
都在忙,此时这个任务会存储到任务队列,等核心线程空闲时执行。
假如此时任务队列也满了,再来了新的任务,此时会创建新的线程,当我们线程数量达到maximumPoolSize
这个值时,再来了新的任务则拒绝处理。