网站建设需要什么工具,高清的网站制作,六安马启兵胡冰倩婚礼,东莞网络seo推广在 Java 线程池中#xff0c;常见的拒绝策略#xff1a;
AbortPolicy#xff08;中止策略#xff09; 特点#xff1a;直接抛出 RejectedExecutionException 异常来拒绝新任务的提交。应用场景#xff1a;适用于对系统的稳定性要求较高#xff0c;不希望丢失任务#…在 Java 线程池中常见的拒绝策略
AbortPolicy中止策略 特点直接抛出 RejectedExecutionException 异常来拒绝新任务的提交。应用场景适用于对系统的稳定性要求较高不希望丢失任务但希望能快速发现任务提交失败的情况。
ThreadPoolExecutor.AbortPolicy abortPolicy new ThreadPoolExecutor.AbortPolicy();CallerRunsPolicy调用者运行策略
特点在调用者线程中直接执行被拒绝的任务。应用场景适用于系统不希望丢弃任务并且对任务的执行延迟要求不高的情况。当线程池已经饱和时新任务会在提交任务的线程中执行可能会导致提交任务的线程阻塞。
ThreadPoolExecutor.CallerRunsPolicy callerRunsPolicy new ThreadPoolExecutor.CallerRunsPolicy();DiscardPolicy丢弃策略
特点默默丢弃无法处理的任务不抛出异常。应用场景适用于可以容忍任务丢失的情况例如不重要的日志处理任务。
ThreadPoolExecutor.DiscardPolicy discardPolicy new ThreadPoolExecutor.DiscardPolicy();DiscardOldestPolicy丢弃最旧策略
特点丢弃任务队列中最旧的未处理任务然后将新任务加入队列重新尝试执行。应用场景适用于任务的重要性相对较低且希望尽量处理新提交的任务的情况。
ThreadPoolExecutor.DiscardOldestPolicy discardOldestPolicy new ThreadPoolExecutor.DiscardOldestPolicy();选择拒绝策略时需要综合考虑以下因素
系统对任务丢失的容忍度如果不能丢失任务应避免使用 DiscardPolicy丢弃策略和 DiscardOldestPolicy丢弃最旧策略。对任务执行延迟的要求如果不希望任务执行延迟增加CallerRunsPolicy调用者运行策略可能不太适合。系统的稳定性和错误处理机制AbortPolicy中止策略能及时抛出异常便于发现和处理任务提交失败的情况。
例如如果是一个关键的交易处理系统不能丢失任务且对稳定性要求高可能选择 AbortPolicy中止策略并在捕获异常后进行相应的处理和日志记录。而对于一个日志收集系统对任务丢失有一定的容忍度可以选择 DiscardPolicy丢弃策略以减少系统负担。