其中corePoolSize是线程池核心数目;maximumPoolSize线程池中线程的最大数目;keepAliveTime表示当线程数目大于core并且超过一定时间,会关闭多余的线程池;workQueue存放任务的线程;threadFactory创建线程的类;handler拒绝处理任务时的策略。
当调用 execute() 方法添加一个任务时,线程池会做如下判断:
如果线程池里线程数量小于corePoolSize,不管线程池里面的线程是否处于运行状态,那么马上创建线程运行这个任务;
如果线程池里线程数量大于或等于corePoolSize,那么将这个任务放入队列。
如果这时候队列满了,而且线程池里的线程数目小于maximumPoolSize,那么还是要创建线程运行这个任务;
如果队列满了,并且线程池里的线程数目达到maximumPoolSize,那么线程池就会执行handler策略。
Read full article from Java杂谈
No comments:
Post a Comment