提起线程,几乎每个人都知道,但是真正使用线程的确实不多。线程让许多人感到畏惧。在平时的工作中,使用线程,很多时候就是new一个Thread去start,当看到线程池ThreadPoolExecutor创建时的一堆参数,更是一头雾水。
接下来的内容,我们就从源码看看ThreadPoolExecutor的工作流程,让你感到其实它很友好😄。
先看一张ThreadPoolExecutor的工作步骤图。
我们来创建一个线程池的执行代码。
int taskCount = 41;
AtomicInteger ai = new AtomicInteger();
ArrayBlockingQueue queue = new ArrayBlockingQueue(30);
ThreadPoolExecutor poolExecutor = new ThreadPoolExecutor(10,20,5, TimeUnit.SECONDS,queue);
for(int i=0;i<taskCount;i++