昨天有个群友在群里问,Java的Thread是不是执行完任务后就销毁了,我回答了“是”,Java的Thread在执行完任务后,一般情况下,确实会自动销毁,但是也要避免意外情况的出现,意外情况很多,这里就不举例了,我们直接来看下面的两段代码:
1 | new Thread(new Runnable() { |
1 | ExecutorService service = Executors.newFixedThreadPool(1); |
我们知道,线程的创建和销毁,都要消耗不少内存,如果每次需要使用线程时,都要去重新创建一个线程,那难免会造成资源的浪费,而且无限的创建,各个线程间相互竞争,会导致过多占用系统资源而导致系统瘫痪,所以在执行批量任务的时候,最好创建可复用的线程,来进行操作。
如上面第二段代码,ExecutorService是Java提供的线程池,它能够创建可复用的线程来执行任务,当任务数超过线程数量时,线程池就会将任务加入队列,等待有空闲的线程时再依次执行。