一.尽量避免使用Executor框架创建的线程池
newFixedThreadPool newSingleThreadExcutor
允许的请求最大队列长度为Integer.MAX_VALUE,可能会堆积大量的请求,从而导致OOM。
newCachedThreadPool newSchduledThreadPool
允许创建的线程池数量为Integer.Max_VALUE,可能会创建大量的线程,从而导致OOM
为什么第二个例子,在限定了堆的内存之后,还会把整个电脑的内存撑爆?
创建线城时用的内存并不是我们制定jvm堆内存,而是系统的剩余内存。(电脑内存-系统其它程序占用的内存-已经预留的jvm内存)
创建线程池时,核心线程数不要过大
如果过大,CPU切换的频率太高。
二 .相应的逻辑,发生异常时要处理