如果我们不使用线程池。我们需要对线程进行如下操作
- 手动创建线程对象。
- 执行任务
- 执行完毕,释放线程对象。
这样它的资源利用率就很低,相当于来一个任务我创建一个对象执行,执行完成以后我把这个对象扔掉。再来一个任务,我又要创建一个新的对象。
线程池的思想:创建多个对象放到池中里,用的时候就拿出来,不够就等别人用完还到池子里再用。
同时当我们需要大量的线程对象的请求的时候,队列也满了,这个时候我们就需要在线程池里面再创建对象来使用了,这样队列就有位置了,别人就可以进来了。但是我们也不能无限的创建线程对象,线程池的容量也是有限的。当达到最大线程池的容量时候,又有东西要来了,只能抛异常或者交给别人去处理了。