;
非核心线程 : 闲置超过一定时间 , 就会被回收 ;
线程池任务调度 : 线程池中维护了一个任务队列 , 线程池启动后 , 会不停的从任务队列中取出任务 , 如果有新任务 , 执行如下操作...) , 那么创建非核心线程 , 执行上述任务 ;
如果 线程数 超过 最大线程数 ( MaxSize )
如果 任务队列没满 , 则将任务放入任务队列 ;
如果 任务队列满了 , 则抛出异常 ; 这里一般情况下需要手动处理这种情况...command) 方法 , 执行线程池任务 ;
在 execute 方法中, 需要执行以下三个步骤 :
如果当前 运行线程数小于核心线程数 , 尝试 启动新线程执行该任务, 该任务是线程的第一个任务...因此, 我们应该再次检查运行状态, 如果需要, 将任务放回队列中, 或者启动一个新线程.
如果 不能将任务入队, 尽量添加一个新线程....如果当前运行线程数小于核心线程数 , 尝试启动新线程执行该任务, 该任务是线程的第一个任务.