参考来自:慕课网spa
建立线程开销大,线程池的做用就是预先创建好线程,等待任务派发。线程
主要由两部分组成:线程+派发任务的queue。全部的线程都会从队列的头部获取任务。若是队列是空的,线程就会一直等待,直到有任务进来。3d
使用方法:建立一个线程池,而后往队列中听任务。code
经常使用使用方法:blog
1 ExecutorService executor = Executors.newFixedThreadPool(30);
其实这只是封装了一下,最终使用的仍是ThreadPoolExecutor。队列
任务的派发:能够看见右边的执行,是先开始了3个任务,由于在定义中设置了大小为3。it
这里的submit()方法里能够接受Runnable类型的参数,也能够接受Callable类型的参数。区别是:Callable有返回值。class
若是想要知道执行任务时的一些信息好比执行成功了吗或者想要取消任务,能够使用Future。线程池