面试官:说说你对于线程池的理解?
这个时候呢,我自己的理解就是可以先说明一下未采用线程池之前的弊端。
我:首先我们没有使用线程池之前呢,是极其的没有效率的,需要频繁的创建和消耗线程比较耗时。
之后呢,再讲线程池的好处。
我:而线程池则可以避免这种开销,并且提高了线程的利用率,提高线程的响应速度,并且还控制了最大并发数(并发数呢就是拒绝策略,后续可以自己进行了解。)。后续的话,各位自己想,我放图下面以及解释,相信都明白了。
例如我们的线程对象目前只有三个,而此时来了四个请求,那么第四个就先进入等待队列中,第一个执行完毕之后,然后我们第四个就去拿那个线程对象,而如果来了很多很多线程怎么办呢?而我们等待队列也是有容量限制的,当达到一定的内存后,后续来的请求不会再进入等待队列,此时的话我们的线程池会启用一种应急策略,在内部再次新开一个线程对象,但是这里要注意,不是顺序的获取这个线程对象,而是后续来的使用线程对象哦,其余的继续等待,当然我们也不会一直的去创建这个线程对象,有一个最大线程数的,当达到了最大线程数之后,线程池就会使用一种拒绝策略,将其他的请求全部进行拒绝。
然后就是我们临时创建的线程对象,也是会设置一个时间的,如果在这个时间没有被使用的话,那么是会释放掉的。
注意!线程池的七个参数都有:最大核心数,最大线程数,超时时间,时间单位,线程工厂,拒绝策略,等待队列。