调度Java应用程序中的主体
许多项目需要计划功能,例如我们计划的工作,重复的工作,异步执行等。
使用计划任务进行编码时,最棘手的部分之一是执行部分。 这里的主要经验法则是注意将要执行的实际代码。 调度框架在后台使用工作线程,以便异步执行代码。 例如,Quartz企业作业调度程序维护一个由主“控制器”线程监控的工作线程池。
您应该记住,调度的作业本质上是异步的,因此引入异步执行层是我们表示保持工作整洁的首选方式。
在过去的很多次中,我们都遇到了这样的难题:让调度框架工作线程执行实际代码,或者实现替代的异步执行层。 每种方法都有其优点和缺点。
使用调度框架执行实际代码,优点:
- 需要更少的实施工作
- 工作线程由框架“控制器”线程监视
- 实施代码在准确的预定时间执行
使用调度框架执行实际代码,缺点:
- 实现代码与调度框架共存
- 对于“长期存在”的实现代码,例如与外部系统的通信,“繁忙时间”的数据库查询,文件解析,循环等,会引起主要问题,您可能会用尽调度框架工作线程的时间,尤其是在这种情况下在短时间间隔内重复工作。
我们想认为调度框架应该充当“调度程序”而不是“执行者”。 计划框架的主要职责应该是在适当的时间“触发”执行事件。 应使用事件侦听器执行代码的实际执行。
实现此设计模式的最佳方法是使用异步JMS消息传递。 调度框架工作线程应在执行时将消息插入JMS队列。 JMS侦听器线程应在收到消息后执行实际代码。 这样做会由于JMS的读/写开销而在实际代码执行之前引入一些延迟,但是“长期存在”的实现代码不会对调度框架造成任何问题。
翻译自: https://www.javacodegeeks.com/2010/05/scheduling-principals-in-java.html
调度Java应用程序中的主体相关推荐
- io调度maple调度程序_调度Java应用程序中的主体
io调度maple调度程序 许多项目需要计划功能,例如我们计划的工作,重复的工作,异步执行等. 我们的首选方法是使用企业作业调度程序,例如OpenSymphony的Quartz. 使用计划任务进行编码 ...
- Java web程序中备份oracle数据库
Java web程序中备份oracle数据库 1.生成备份文件: public ActionForward createDmp(ActionMapping mapping, ActionForm fo ...
- 在 Java 应用程序中使用 Elasticsearch: 高性能 RESTful 搜索引擎和文档存储快速入门指南
如果您使用过 Apache Lucene 或 Apache Solr,就会知道它们的使用体验非常有趣.尤其在您需要扩展基于 Lucene 或 Solr 的解决方案时,您就会了解 Elasticsear ...
- elastic search java_在 Java 应用程序中使用 Elasticsearch
如果您使用过 Apache Lucene 或 Apache Solr,就会知道它们的使用体验非常有趣.尤其在您需要扩展基于 Lucene 或 Solr 的解决方案时,您就会了解 Elasticsear ...
- 网络研讨室_免费网络研讨会:Java应用程序中的吞咽异常
网络研讨室 1月30日参加我们的网络研讨会,以发现Java应用程序中的"隐藏"异常. 如果一棵树落在森林中,但是没有写到原木上,它会发出声音吗? 答案是肯定的. 这些类型的错误可能 ...
- lombok 生成代码_使用Project Lombok减少Java应用程序中的样板代码
lombok 生成代码 对Java编程语言最常提出的批评之一是它需要大量的样板代码 . 对于简单的类尤其如此,该类只需要存储一些值就可以. 您需要这些值的getter和setter方法,也许您还需要一 ...
- 免费网络研讨会:Java应用程序中的吞咽异常
1月30日参加我们的网络研讨会,以发现Java应用程序中的"隐藏"异常. 如果一棵树落在森林中,但是没有写到原木上,它会发出声音吗? 答案是肯定的. 这些类型的错误可能会对用户体验 ...
- java程序中用户名和密码_在Java应用程序中使用密码术
java程序中用户名和密码 这篇文章描述了如何使用Java密码体系结构 (JCA),该体系结构使您可以在应用程序中使用密码服务. Java密码体系结构服务 JCA提供了许多加密服务,例如消息摘要和签名 ...
- 使用Project Lombok减少Java应用程序中的样板代码
对Java编程语言最常提出的批评之一是它需要大量的样板代码 . 对于简单的类尤其如此,该类只需要存储一些值就可以. 您需要这些值的getter和setter,也许您还需要一个构造函数,覆盖equals ...
最新文章
- 自动人脸识别基本原理
- 小程序简单封装 request 请求
- 多线程:什么是ThreadLocal?应用场景?
- 使用 FTP 迁移 SQL Server 数据_迁移数据_快速入门(SQL Server)_云数据库 RDS 版-阿里云...
- iOS----------使用cocoapods遇到的问题
- php register_shutdown_function响应error 配合error_get_last 捕获错误
- PHP中生成UUID
- django-关联查询-通过模型类跨表关联查询
- js 学习笔记(一)
- mt4交易软件云服务器_MT4软件使用教程1常见货币对交易图表类型
- 全球首发!惯性导航导论(剑桥大学)第五部分
- BeautifulSoup模块过滤掉html标签,只拿文本内容(处理XSS攻击)
- cesium 取消光晕
- [MySQL学习]Innodb锁相关描述翻译
- 主键和外键举例_数据库-主键和外键及其约束
- linux部署k8s教程
- scrum敏捷开发项目管理工具必备
- 【华人学者风采】周明 微软亚洲研究院
- 同时被三个面试官面试_工作面试官犯的5个错误
- Python|tkinter+matplotlib实现给老铁的生日礼物
热门文章
- 托管 非托管_如何在托管的Kubernetes上备份Neo4J
- java联接pg库_Java14:使用Java 14的新记录联接数据库表
- selenium自动化测试_Selenium测试可实现有效的测试自动化
- jakarta ee_适用于Java EE / Jakarta EE开发人员的Micronaut
- log4j2 xsd_Log4j 2.x XSD的描述不完整
- eclipse开发jsf_在Eclipse上创建JSF / CDI Maven项目
- 魔术笔反选_魔术二传手反图案
- Java:从Java 8开始受益于内联类属性
- 怎样编写测试类测试分支_编写干净的测试–从配置开始
- 詹金斯搭建_与詹金斯一起连续交付Heroku