JUC学习-23-线程池拒绝策略

JUC学习-23-线程池拒绝策略

image


四种拒绝策略

1、默认:AbortPolicy 直接抛异常

image

  public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
			throw new RejectedExecutionException("Task " + r.toString() +
												 " rejected from " +
												 e.toString());
		}
	}

2、CallerRunsPolicy 如果线程池没有关闭 执行run方法

image

public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
        if (!e.isShutdown()) {
            r.run();
        }
    }
}

3、DiscardOldestPolicy 如果线程池没有关闭,会将队列最强面的任务弹出(淘汰),并将新的任务放入到对流末尾

image

		public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
			if (!e.isShutdown()) {
				e.getQueue().poll();
				e.execute(r);
			}
		}

4、DiscardPolicy 什么也不做

image

  public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
		}
posted @ 2025-08-04 13:55  skystrivegao  阅读(24)  评论(0)    收藏  举报