池是一个容器,这个容器中存储的是线程(已经创建好的)
原因:多个任务并发执行,任务又比较小,大部分时间都耗费在线程的创建和销毁。线程的创建和销毁需要调用底层的系统资源,这样就会很消耗资源。
当创建好线程池,内部就会有线程对象,任务过来,有一个线程对象就去执行任务。任务执行结束,它也不会销毁,而是回到线程池中,等到下一个任务。
在java中,有封装好的线程池对象,供我们使用,不需要自己手动创建线程池。
通过java.util.concurrent包中的Executors类中的静态方法来创建线程池。
方法的返回值 ExecutorService类型,该对象是用来管理线程池的。
方法:
submit:提交任务
shutdown:关闭线程池
创建线程池:
java.util.concurrent.ThreadPoolExecutor对象
队列:常用有三种
直接提交:SynchronousQueue
有界队列:ArrayBlockingQueue
无界对垒:LinkedBlockingQueue
工厂:
Executors.defaultThreadFactory()
拒绝策略:
线程池原理分析: