在Java语言中,并发编程依赖于线程池,创建线程池的方式有很多种。但是从大类上来说,线程池的创建可以分为两类:手动使用ThreadPoolExecutor创建线程池和使用Executors自动创建线程池。那么使用哪种方式来创建线程池呢?今天就来详细说说。先说结论吧。在Java语言中,必须使用ThreadPoolExecutor手动创建线程池,因为这种方式可以通过参数控制最大任务数和拒绝策略,使得线程池的执行更加透明可控,可以避免资源风险筋疲力尽。OOM风险论证如果我们使用Executors自动创建线程池来创建线程池,那么就会存在线程溢出的风险。以CachedThreadPool为例进行演示:importjava.util.ArrayList;importjava.util.List;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;publicclassThreadPoolExecutorExample{staticclassOOMClass{//创建1MB变量(1M=1024KB=1024*1024Byte)privatebyte[]data_byte=新字节[1*1024*1024];}publicstaticvoidmain(String[]args)throwsInterruptedException{//使用executor自动创建线程池ExecutorServicethreadPool=Executors.newCachedThreadPool();List