一个线程在运行结束后, 是不能再次调用start() 方法启动的.
那JDK中的线程池是如何做到线程回收以及复用的呢?...复用原理
复用原理很简单, 就是生产者消费模式
将提交的线程任务写入任务队列, 线程池中的一个线程不断的从任务队列中拿出任务并执行....在线程池(ThreadPoolExecutor)中, 线程复用过程也是类似的.
1....向线程池提交任务之后,
如果当前执行中的线程数是否小于核心线程数(corePoolSize), 则执行addWorker()方法, 直接执行任务;
否则, 将任务添加到任务队列(workQueue)...= null 优先执行提交的任务;
后续执行时, 会根据(task = getTask()), 从任务队列(workQueue)中取出task, 并继续执行.