前言:当线程的数量超过最大承受数量的适合,会发起拒绝策略用于自我保护线程
1、AbortPolicy(默认):直接抛出RejectedExecutionException异常队列
2、CallerRunsPolicy:调用者运行使用的一种机制,不会将任务抛弃,也不会抛出异常,而是将任务回退给调用者io
3、DiscardOldestPolicy:抛弃队列中等待最久的任务,而后将当前任务加入到队列中,而后试着提交当前任务class
4、DiscardPolicy:直接丢弃任务,不作任何处理也不会抛弃异常cpu
补充异常
1、既然线程数量可能会超过最大承受数量,那么多少线程数是合理的呢?di
一、CPU密集型:最大线程数应为cpu核心数+1co
二、I/O密集型阻塞
1)、cpu核心数 * 2
2)、使用公式:cpu核数 /(1 - 阻塞系数),阻塞系数通常在0.8~0.9之间,而书中提到的范围是0~1