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

高港区住房和城乡建设局网站wordpress评论点赞

高港区住房和城乡建设局网站,wordpress评论点赞,花市小说网站那里进,网站平面设计在日常开发中#xff0c;我们经常遇到这样一种需求#xff1a;需要按照任务的优先级顺序来执行#xff0c;而不是简单的先进先出#xff08;FIFO#xff09;。Java 提供了 PriorityBlockingQueue#xff0c;这是一个基于优先级排序的线程安全队列#xff0c;可以用于实现…在日常开发中我们经常遇到这样一种需求需要按照任务的优先级顺序来执行而不是简单的先进先出FIFO。Java 提供了 PriorityBlockingQueue这是一个基于优先级排序的线程安全队列可以用于实现一个支持优先级任务的线程池。在这篇博客中我们将介绍两种使用 PriorityBlockingQueue 实现优先级线程池的方法并讨论它们的适用场景和优缺点。 方法一实现 Comparable 接口的优先级任务类 1.1 方案概述 这种方法的核心在于让任务类Task实现 Comparable 接口并在 compareTo 方法中定义优先级的排序逻辑。PriorityBlockingQueue 会根据 Comparable 的实现来自动对任务进行排序优先级高的任务会被排在队列的前面先执行。 1.2 实现步骤 定义优先级任务类实现 Runnable 或 Callable 接口同时实现 Comparable 接口。创建优先级线程池使用 PriorityBlockingQueue 作为任务队列。提交任务到线程池按不同优先级提交任务线程池会自动按照优先级来执行任务。 1.3 示例代码 import java.util.concurrent.*;public class PriorityTask implements Runnable, ComparablePriorityTask {private final int priority;private final String name;public PriorityTask(int priority, String name) {this.priority priority;this.name name;}Overridepublic void run() {System.out.println(Executing task: name with priority: priority);}Overridepublic int compareTo(PriorityTask other) {return Integer.compare(this.priority, other.priority); // 优先级值越小优先级越高} }public class PriorityThreadPoolExecutor extends ThreadPoolExecutor {public PriorityThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit) {super(corePoolSize, maximumPoolSize, keepAliveTime, unit, new PriorityBlockingQueueRunnable());} }1.4 使用示例 public class Main {public static void main(String[] args) {PriorityThreadPoolExecutor executor new PriorityThreadPoolExecutor(2, 4, 1, TimeUnit.MINUTES);executor.execute(new PriorityTask(10, Low priority task));executor.execute(new PriorityTask(1, High priority task));executor.execute(new PriorityTask(5, Medium priority task));executor.shutdown();} }1.5 优缺点 优点 直接在任务类中定义优先级逻辑代码结构简单明了。无需额外的排序定义PriorityBlockingQueue 自动根据 Comparable 实现排序。 缺点 任务类必须实现 Comparable 接口优先级规则是硬编码在任务类中的难以灵活修改。如果需要多种优先级规则任务类代码会变得复杂不适合多变的业务需求。 方法二使用 Comparator 自定义排序规则 2.1 方案概述 在这种方法中我们不再让任务类实现 Comparable 接口而是使用 PriorityBlockingQueue 的构造方法传入一个 Comparator 对象。这样可以通过 Comparator 动态地定义任务的优先级排序规则。这种方式更加灵活适合需要动态设置优先级或多重排序规则的场景。 2.2 实现步骤 定义任务类实现 Runnable 或 Callable 接口无需实现 Comparable。创建优先级线程池使用 PriorityBlockingQueue 作为任务队列并传入自定义的 Comparator。提交任务到线程池按照不同优先级提交任务线程池会根据 Comparator 的排序规则来执行任务。 2.3 示例代码 import java.util.concurrent.*;public class Task implements Runnable {private final int priority;private final String name;public Task(int priority, String name) {this.priority priority;this.name name;}Overridepublic void run() {System.out.println(Executing task: name with priority: priority);}public int getPriority() {return priority;} }public class PriorityThreadPoolExecutor extends ThreadPoolExecutor {public PriorityThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit) {super(corePoolSize, maximumPoolSize, keepAliveTime, unit,new PriorityBlockingQueue(11, Comparator.comparingInt(Task::getPriority)));} }2.4 使用示例 public class Main {public static void main(String[] args) {PriorityThreadPoolExecutor executor new PriorityThreadPoolExecutor(2, 4, 1, TimeUnit.MINUTES);executor.execute(new Task(10, Low priority task));executor.execute(new Task(1, High priority task));executor.execute(new Task(5, Medium priority task));executor.shutdown();} }2.5 优缺点 优点 可以灵活定义优先级规则通过传入不同的 Comparator 实现动态排序。更加清晰的结构不需要在任务类中嵌入优先级排序逻辑任务类更加独立。 缺点 相对复杂一些需要定义额外的 Comparator。可能需要管理多个 Comparator 实现如果优先级规则过多可能会增加一定的代码复杂度。 两种方法对比总结 比较项方法一实现 Comparable方法二使用 Comparator 自定义排序规则代码结构任务类中包含优先级逻辑任务类和优先级规则分离灵活性不灵活排序规则固定灵活可随时更改 Comparator适用场景固定优先级规则动态优先级需求多种排序规则实现难度简单适合初学者略复杂需要理解 Comparator 使用扩展性差需改动任务类本身高可复用不同 Comparator 总结 如果您的任务优先级是固定的而且排序规则简单方法一实现 Comparable 接口 更加直接明了。如果您需要灵活的优先级规则或者希望在不同条件下使用不同的优先级排序规则那么方法二使用 Comparator 自定义排序规则更适合。
http://www.zqtcl.cn/news/882838/

相关文章:

  • 有专做高端折扣女装的网站吗大连最好的做网站的公司
  • 网站需求嘉兴seo关键词优化
  • 自己开发微网站上海成品网站
  • 国外对企业网站开发的研究山西住房与城乡建设厅定额网站
  • 国家工信部网站备案postfix wordpress
  • 兴宁电子商务网站建设网站模板在线制作
  • 汕头整站优化营销推广网
  • 云服务器搭建网站教程加盟教育培训机构
  • 建筑网站设置工资单人换了怎么换太原做网站找谁
  • 网站做推广需要什么条件重庆网站推广哪家服务好
  • 怎样做理财网站wordpress做产品页教程视频
  • 官网模板建站塔山双喜北京网站建设兴田德润官网多少
  • 网站优化推广外包深圳专业网站建设定制
  • 网站开发aichengkeji元凤建盏简介
  • 移动端网站怎么制作asp做的网站如何发布
  • 做的网站用户密码在哪里找凡科申请的网站和qq空间一样吗
  • 如何自己做网站发布到服务器上面wordpress没有幻灯片
  • 闽侯县建设局网站企业建设网站例文
  • 家居类企业响应式网站搭建电商系统
  • 临沂哪里做网站比较好中国建设银行企业信息门户网站
  • 低价建网站提高网站订单转化率
  • 家居网站应该怎么做网站seo推广软件
  • 旅游网站建设报告关键词优化排名价格
  • 上海网站开发caiyiduo微信建微网站
  • 做网站和做网店哪个好用cms做单页网站怎么做
  • 阿里云有主体新增网站可以免费制作网页的网站
  • 网站备案幕布拍照是什么莱芜网络推广公司服务
  • 招个网站建设维护国家高新技术企业官网
  • 建设医疗网站做企业官网哪家公司好
  • 网站建设常见问题及解决办法站长网站大全