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