线程池的核心参数
1 public static void main(String[] args) { 2 ThreadFactory threadFactory = new ThreadFactory() { 3 @Override 4 public Thread newThread( Runnable r) { 5 Thread thread = new Thread(); 6 thread.setName("11"); 7 thread.setPriority(1); 8 return thread; 9 } 10 }; 11 //核心数量、最大值、存活时间、存活时间的单位、存储线程的队列、定义线程的工厂、拒绝策略 12 // 存储线程的队列 13 /*ArrayBlockingQueue:一个由数组结构组成的有界阻塞队列。 14 15 LinkedBlockingQueue:一个由链表结构组成的有界阻塞队列。 16 17 SynchronousQueue:一个不存储元素的阻塞队列,即直接提交给线程不保持它们。 18 19 PriorityBlockingQueue:一个支持优先级排序的无界阻塞队列。 20 21 DelayQueue:一个使用优先级队列实现的无界阻塞队列,只有在延迟期满时才能从中提取元素。 22 23 LinkedTransferQueue:一个由链表结构组成的无界阻塞队列。与SynchronousQueue类似,还含有非阻塞方法。 24 25 LinkedBlockingDeque:一个由链表结构组成的双向阻塞队列(默认)。*/ 26 27 // 被拒绝的线程如何处理 28 // 1.直接抛出错误 (默认) AbortPolicy 29 // 2.直接丢弃 DiscardPolicy 30 // 3.替换成存活时间最长的线程去执行 DiscardOldestPolicy 31 // 4.使用当前调用的线程来执行 CallerRunsPolicy 32 33 ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(10, 1, 10, TimeUnit.SECONDS, new LinkedBlockingDeque<>(), threadFactory); 34 }