1、 使用Executors创建FiexdThreadPool时,对应了一个newFixedThreadPool的构造方法,而这个方法会创建一个队列为LinkedBlockingQueue。
LinkedBlockingQueue是一个无界阻塞队列,如果使用该线程池执行任务,如果任务过多时就会不断的添加到队列中,任务越多占用的内存就越多,最终可能耗尽内存,导致OOM。
2、使用Executors创建SingleThreadExecutor时候,对产生一个名为newSingleThreadExecutor的构造方法,指定的是LinkedBlockingQurere,和上面一样也会耗尽内存。
建议直接使用ThreadPoolExecutor来定义线程池,这样可以更灵活控制。