多线程:多线程饱和拒绝策略

前言:当线程的数量超过最大承受数量的适合,会发起拒绝策略用于自我保护线程

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

相关文章
相关标签/搜索