当前位置: 首页 > news >正文

网站开发及代运营用帝国cms做门户网站

网站开发及代运营,用帝国cms做门户网站,房地产项目网站,勒流顺德网站建设文章目录 一、简介二、AbortPolicy拒绝策略A. 概述B. 拒绝策略实现原理C. 应用场景D. 使用示例 三、CallerRunsPolicy拒绝策略A. 概述B. 拒绝策略实现原理C. 应用场景D. 使用示例 四、DiscardPolicy拒绝策略A. 概述B. 拒绝策略实现原理C. 应用场景D. 使用示例 五、DiscardOldes… 文章目录 一、简介二、AbortPolicy拒绝策略A. 概述B. 拒绝策略实现原理C. 应用场景D. 使用示例 三、CallerRunsPolicy拒绝策略A. 概述B. 拒绝策略实现原理C. 应用场景D. 使用示例 四、DiscardPolicy拒绝策略A. 概述B. 拒绝策略实现原理C. 应用场景D. 使用示例 五、DiscardOldestPolicy拒绝策略A. 概述B. 拒绝策略实现原理C. 应用场景D. 使用示例 六、总结各种拒绝策略的特点和适用场景 一、简介 在Java多线程编程中我们通常使用线程池来管理和调度任务。线程池由一组预先创建的线程组成可以重复利用这些线程来执行多个任务避免频繁地创建和销毁线程而带来的性能开销。 当线程池中的任务队列已满且无法再接受新的任务时就需要采取拒绝策略来处理这种情况。拒绝策略定义了当无法再接受新的任务时如何处理这些被拒绝的任务。 Java提供了四种常见的拒绝策略 AbortPolicy抛出异常默认的拒绝策略。当任务无法被提交给线程池时会直接抛出RejectedExecutionException异常。 CallerRunsPolicy调用者运行当任务无法被提交给线程池时会由提交任务的线程自己执行该任务。 DiscardPolicy直接丢弃当任务无法被提交给线程池时直接丢弃该任务没有任何提示或处理。 DiscardOldestPolicy丢弃最旧任务当任务无法被提交给线程池时会丢弃队列中最早的一个任务然后尝试再次提交当前任务。 二、AbortPolicy拒绝策略 A. 概述 AbortPolicy是ThreadPoolExecutor的默认拒绝策略当任务无法被提交给线程池时会直接抛出RejectedExecutionException异常。 B. 拒绝策略实现原理 实现RejectedExecutionHandler接口在rejectedExecution方法中抛出异常。 public class AbortPolicy implements RejectedExecutionHandler {public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {throw new RejectedExecutionException(Task r.toString() rejected from e.toString());} }C. 应用场景 适用于对任务提交失败要求敏感的场景需要明确知道任务是否被接受并执行。 D. 使用示例 当线程池的任务队列和线程队列都已满的情况下执行决绝策略 public class Task implements Runnable {private final int index;public Task(int index) {this.index index;}Overridepublic void run() {System.out.println(Thread.currentThread().getName() index);} }public class Main {public static void main(String[] args) {// 创建线程池ThreadPoolExecutor threadPool new ThreadPoolExecutor(1, 1, 0L,TimeUnit.SECONDS,new LinkedBlockingQueue(1),new ThreadPoolExecutor.AbortPolicy());try {// 提交任务threadPool.execute(new Task(1));threadPool.execute(new Task(2));threadPool.execute(new Task(3));} catch (RejectedExecutionException e) {e.printStackTrace();} finally {// 关闭线程池threadPool.shutdown();}} }三、CallerRunsPolicy拒绝策略 A. 概述 CallerRunsPolicy是一种简单的拒绝策略当任务无法被提交给线程池时会由提交任务的线程自己执行该任务。 B. 拒绝策略实现原理 实现RejectedExecutionHandler接口在rejectedExecution方法中使用提交任务的线程来执行任务。 public class CallerRunsPolicy implements RejectedExecutionHandler {public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {if (!e.isShutdown()) {r.run();}} }C. 应用场景 适用于对任务提交失败要求较低的场景通过调用线程来执行任务避免任务丢失。 D. 使用示例 public class Task implements Runnable {private final int index;public Task(int index) {this.index index;}Overridepublic void run() {System.out.println(Thread.currentThread().getName() index);} }public class Main {public static void main(String[] args) {// 创建线程池ThreadPoolExecutor threadPool new ThreadPoolExecutor(1, 1, 0L,TimeUnit.SECONDS,new LinkedBlockingQueue(1),new ThreadPoolExecutor.CallerRunsPolicy());try {// 提交任务threadPool.execute(new Task(1));threadPool.execute(new Task(2));threadPool.execute(new Task(3));} catch (RejectedExecutionException e) {e.printStackTrace();} finally {// 关闭线程池threadPool.shutdown();}} }四、DiscardPolicy拒绝策略 A. 概述 DiscardPolicy是一种简单的拒绝策略当任务无法被提交给线程池时会直接丢弃该任务没有任何提示或处理。 B. 拒绝策略实现原理 实现RejectedExecutionHandler接口在rejectedExecution方法中不做任何操作即丢弃任务。 public class DiscardPolicy implements RejectedExecutionHandler {public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {// Do nothing, discard the task} }C. 应用场景 适用于对任务提交失败不敏感的场景对任务丢失没有特殊要求。 D. 使用示例 public class Task implements Runnable {private final int index;public Task(int index) {this.index index;}Overridepublic void run() {System.out.println(Thread.currentThread().getName() index);} }public class Main {public static void main(String[] args) {// 创建线程池ThreadPoolExecutor threadPool new ThreadPoolExecutor(1, 1, 0L,TimeUnit.SECONDS,new LinkedBlockingQueue(1),new ThreadPoolExecutor.DiscardOldestPolicy());try {// 提交任务threadPool.execute(new Task(1));threadPool.execute(new Task(2));threadPool.execute(new Task(3));} catch (RejectedExecutionException e) {e.printStackTrace();} finally {// 关闭线程池threadPool.shutdown();}} }五、DiscardOldestPolicy拒绝策略 A. 概述 DiscardOldestPolicy是一种拒绝策略当任务无法被提交给线程池时会丢弃最早的一个任务然后尝试再次提交。 B. 拒绝策略实现原理 实现RejectedExecutionHandler接口在rejectedExecution方法中从队列中获取最早的任务并丢弃再次提交当前任务。 public class DiscardOldestPolicy implements RejectedExecutionHandler {public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {if (!e.isShutdown()) {e.getQueue().poll();e.execute(r);}} }C. 应用场景 适用于对新任务优先级比较高的场景可以丢弃旧的任务以保证及时处理新任务。 D. 使用示例 public class Task implements Runnable {private final int index;public Task(int index) {this.index index;}Overridepublic void run() {System.out.println(Thread.currentThread().getName() index);} }public class Main {public static void main(String[] args) {// 创建线程池ThreadPoolExecutor threadPool new ThreadPoolExecutor(1, 1, 0L,TimeUnit.SECONDS,new LinkedBlockingQueue(2),new ThreadPoolExecutor.DiscardOldestPolicy());try {// 提交任务threadPool.execute(new Task(1));threadPool.execute(new Task(2));threadPool.execute(new Task(3));threadPool.execute(new Task(4));} catch (RejectedExecutionException e) {e.printStackTrace();} finally {// 关闭线程池threadPool.shutdown();}} }六、总结 各种拒绝策略的特点和适用场景 AbortPolicy对任务提交失败要求敏感需要明确知道任务是否被接受并执行。CallerRunsPolicy对任务提交失败要求较低通过调用线程来执行任务避免任务丢失。DiscardPolicy对任务提交失败不敏感对任务丢失没有特殊要求。DiscardOldestPolicy适用于新任务优先级高丢弃旧任务以保证及时处理新任务。
http://www.w-s-a.com/news/110606/

相关文章:

  • 建网站首页图片哪里找263企业邮箱网页版登录
  • 盐城网站建设电话高端定制网站
  • 成都网站seo技术施工企业样板先行制度
  • 高端网站建设电话河北建筑工程信息网站
  • 亲 怎么给一个网站做备份财务系统有哪些软件
  • wordpress重新手机优化专家下载
  • 怎样把网站做成软件设计工作室怎么接单
  • html网站设计实例代码重庆多个区划定风险区
  • 推广方案设计同一个网站可以同时做竞价和优化
  • 论坛网站开发 go电商扶贫网站建设
  • 个人建站教程优秀的定制网站建设
  • 农村建设集团有限公司网站下载百度极速版
  • 微信公众号个人可以做网站么做企业网站需要哪些
  • 如何用付费音乐做视频网站wordpress如何设置首页
  • 杨凯做网站网站首页 排版
  • 网站图片标签江苏省建设类高工申报网站
  • 网站建设中的英文什么网站可以做医疗设备的
  • 柳州购物网站开发设计服装网站的建设与管理
  • 做网站的上海市哪家技术好北京百姓网免费发布信息
  • 网站文章排版制作网站软件
  • 云南网站开发公司网站商城定制网站建设
  • 企业网站的新闻资讯版块有哪些肇庆自助建站模板
  • 怎么做平台网站吗为网站做seo需要什么
  • 苏州吴江建设局招标网站海南网站搭建价格
  • 网站建设主要研究内容用哪个程序做网站收录好
  • 网站建设如何开单装修设计图免费
  • 做内容网站赚钱吗seo推广具体做什么
  • 连山区网站建设seo简历
  • 自助建站系统官方版太仓高端网站制作
  • 怎样只做自己的网站建设银行唐山分行网站