线程池四种拒绝策略理论简述

线程池四种拒绝策略理论简述

大厂面试题:

1、请你谈谈对volatile的理解?

2、CAS你知道吗?

3、原子类AtomicInteger的ABA问题谈谈?原子更新引用知道吗?

4、我们都知道ArrayList是线程不安全的,请编码写一个不安全的案例并给出解决方案?

5、公平锁/非公平锁/可重入锁/递归锁/自旋锁谈谈你的理解?请手写一个自旋锁。

6、CountDownLatch、CyclicBarrier、Semaphore使用过吗?

7、阻塞队列知道吗?

8、线程池用过吗?ThreadPoolExecutor谈谈你的理解?

9、线程池用过吗?生产上你是如何设置合理参数?

10、死锁编码及定位分析?

 

1、拒绝策略是什么?

      等待队列已经排满了,再也塞不下新任务,同时线程池中线程也已经达到maximumPoolSize数量,无法继续为新任务服务,这个时候就需要使用拒绝策略来处理。

 

2、线程池四种拒绝策略简介

(1)AbortPolicy(默认)

       直接抛出RejectedExecutionException异常阻止系统正常运行。

 

(2)CallerRunsPolicy

       “调用者运行”一种调节机制,该策略既不会丢弃任务,也不会抛出异常,而是将某些任务回退给调用者,从而降低新任务的流量。

 

(3)DiscardOldestPolicy

       抛弃队列中等待最久的任务,然后把当前任务加入队列中尝试再次提交当前任务。   

 

(4)DiscardPolicy

       直接丢弃任务,不予任何处理也不抛出异常。如果允许任务丢失,这是最好的一种方案。

 

你可能感兴趣的:(Java,Java,JUC分析)