疑问
为什么要用线程池,或者线程池为了解决什么问题而存在?
介绍
在正式解答上面的疑问之前,我们先了解一下线程池是什么,线程池其实就是在我们使用线程之前提前创建若干个可执行的线程放入到一个容器中,就相当于是一个池子,需要的时候呢,就从这个容器/池中获取线程,不用自己去创建,使用完之后不需要销毁线程而是直接放回池中,以此减少创建和销毁线程对象的开销
解答
我们在面向对象的编程里,创建和销毁对象其实是一件很浪费时间的事,在Java中就更不要说了,JVM想跟踪每一个对象进行管理,为了能够在对象销毁后进行垃圾回收,所以为了更好的提高这方面的性能和效率,最好的一个手段就是尽可能的减少创建和销毁对象的次数,特别是一些很消耗资源的对象,这就是池化资源技术产生的原因,说到池化资源技术,其实说到线程池,大家应该对数据库连接池应该不陌生吧,其实都是为了解决同一个问题
线程池工具介绍
Java有一个Executor接口定义了一个执行线程的工具,它的一个子类,线程池接口类ExecutorService,工具类Executors提供了一些静态工厂方法,生成了一些常用的线程池,为了解决复杂的线程池配置,下面介绍一下工具类Executors提供的方法: