一直有一个疑惑请大家帮我解答一下
问题描述:
我们都知道当一个线程使用完之后(线程处于死亡状态时)是不可以再次启动的,那么线程池里面当池中的某一个线程执行完一次任务之后是否会被销毁?若是销毁,是否是jvm在适当的时候(cup空闲)会new一个新的线程补充线程池?
池中的线程执行完一个任务应该会等待,而不是让它死掉;需要线程池就是因为它能省去创建线程的时间和资源消耗,要是死了还要它做什么啊
按理说线程池里面的线程使用完后是不会被销毁的,因为创建线程毕竟占用大量系统资源,以前我自己写过一个线程池,就是用完一个线程就让它死掉,然后再创建一个,但是我发现CUP占用率一会就到了100%,后来换了jdk1.5自带的线程池后,CUP占用率基本不到5%,像楼主问的这个问题,应该是属于线程池内部实现的一种机制,我感觉线程池的原理跟连接池差不多吧,不过线程比较特殊,运行完了后就死了,线程池应该有管理线程的机制,不让它死掉或者其他什么方法让他恢复,反正不会一直创建线程的。楼主最后那句话,答案是不一定,看你线程池的最小线程数,如果目前线程数大于最小线程池数,那么应该不会创建新的线程,建议楼主看看线程池的实现原理,对楼主的问题会有很大帮助,呵呵。