线程池的三个常用创建方式:
1)newFixedThreadPool() 一池固定多少个线程
2)newSingleThreadExecutor() 一池一个线程
3)newCachedThreadPool() 一池N个处理线程(N由系统决定)
但是在实际开发中不能用以上的三种,要用自定义的线程池,原因是:
(阿里巴巴Java开发手册中写到)
newFixedThreadPool的阻塞队列实现的是LinkedBlockingQueue,它没有设置边界,所以它的边界可以是Integer.MAX_VALUE,会出现内存溢出
自定义的线程池: