线程池的execute实现逻辑: 向线程池提交一个任务,如果线程数不超过核心线程数,就创建线程,否则加入阻塞队列。
这里创建的"线程"是一个包装thread类(通过继承)的类,其中run( ) 是一个循环,不断从阻塞队列中取任务执行
final void runWorker(Worker w) { Runnable task = w.firstTask; w.firstTask = null; // 首次任务置空 while ((task != null) || (task = getTask()) != null) { try { task.run(); // 执行任务 } catch (RuntimeException ex) { handleException(ex); // 处理运行时异常 } } }