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

那些网站是php做的软文交易平台

那些网站是php做的,软文交易平台,违法网站开发人员,在家办厂小型加工项目文章目录 一、简介二、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提供了四种常见的拒绝策略:

  1. AbortPolicy(抛出异常):默认的拒绝策略。当任务无法被提交给线程池时,会直接抛出RejectedExecutionException异常。

  2. CallerRunsPolicy(调用者运行):当任务无法被提交给线程池时,会由提交任务的线程自己执行该任务。

  3. DiscardPolicy(直接丢弃):当任务无法被提交给线程池时,直接丢弃该任务,没有任何提示或处理。

  4. 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.hkea.cn/news/943406/

相关文章:

  • 重庆南岸营销型网站建设公司推荐竞价sem托管
  • 深圳做二维码网站建设什么是互联网营销
  • 网易企业邮箱收费标准百色seo关键词优化公司
  • 做网站的财务需求张北网站seo
  • 北京赛车彩票网站怎么做佛山本地网站建设
  • 门户网站的建设方式有哪些网络推广引流
  • 做中东服装有什么网站免费seo刷排名
  • 做网站用java还是c语言百度竞价推广培训
  • 做动画视频的网站市场监督管理局官网入口
  • 做bbs网站教程军事新闻最新消息今天
  • 在哪儿可以找到网站开发的需求搜索引擎优化介绍
  • 成都网站建设代理加盟网络运营培训班多少钱
  • 太原开发网站公司站长工具端口扫描
  • 域控制网站访问自媒体视频发布平台
  • 广西住房和城乡建设委员会网站湖南网站营销seo多少费用
  • 关键词推广名词解释百度竞价关键词怎么优化
  • 群辉服务器做网站网络优化的内容包括哪些
  • 做淘客的网站岳阳seo
  • 网吧设计方案seox
  • 谁做网站市场营销专业
  • 慈溪外贸公司网站网络营销就业前景和薪水
  • 电商网站建设实训报告长沙网站seo推广公司
  • 阿里云ecs怎么建网站吉林网站seo
  • 企业营销型网站建设的可行性西安竞价托管
  • 做网站如何适应分辨率网站分析培训班
  • 现在币圈有那些私募网站做的好百度推广账号登陆入口
  • 旅游网站图片营销公司排名
  • 做服务器的网站都有哪些搜狗关键词排名此会zjkwlgs
  • php动态网站开发 唐四薪 答案b站引流推广网站
  • 长沙3天2晚自由行攻略论述搜索引擎优化的具体措施