applicationContext.xml:
<bean name="healthDegree" class="util.HealthDegree">
<property name="service" ref="AppService"></property>
</bean>
<bean id="healthDegreeTask"
class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask" ref="healthDegree" />
<property name="period" value="300000" />
<property name="delay" value="1000" />
</bean>
<bean class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref bean="healthDegreeTask"/>
</list>
</property>
</bean>
util.HealthDegree:
public class HealthDegree extends TimerTask {
private Logger log = Logger.getLogger(HealthDegree.class);
IApp service ;/*= new AppService();*/
public IApp getService() {
return service;
}
public void setService(IApp service) {
this.service = service;
}
//
public List<HealthAppUrl> getScanHdUrl()
{
List<HealthAppUrl> list = service.listAppHD();
return list;
}
//
public void insertScanHdInfo(HealthDegreeData hdd){
service.insertScanHdInfo(hdd);
}
private boolean execute_connetion(String URLName) {
try {
HttpURLConnection.setFollowRedirects(false);
HttpURLConnection con = (HttpURLConnection) new URL(URLName).openConnection();
con.setRequestMethod("HEAD");
return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
} catch (Exception e) {
//e.printStackTrace(); //这里是关键点,避免异常后的就终止调度了
return false;
}
}
@Override
public void run() {
List<HealthAppUrl> dataList = getScanHdUrl();
for(int i=0;i<dataList.size();i++){
HealthDegreeData hdd = new HealthDegreeData();
SimpleDateFormat sfm=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String scanStartTime = sfm.format(new Date(System.currentTimeMillis()));
hdd.setHd_id(1);
hdd.setHd_app_id(dataList.get(i).getId());
hdd.setHd_app_url(dataList.get(i).getApp_url_wai());
hdd.setHd_conn_time(scanStartTime);
hdd.setHd_hour(scanStartTime.substring(10,13));
String URLName = dataList.get(i).getApp_url_wai();
try {
if(this.execute_connetion(URLName)) {
hdd.setIs_success("1");
log.info("访问成功");
}else{
hdd.setIs_success("0");
log.info("访问失败");
}
String scanEndTime = sfm.format(new Date(System.currentTimeMillis()));
hdd.setHd_close_conn_time(scanEndTime);
} catch (Exception e) {
log.info("访问失败");
}finally{
service.deleteScanHdInfo();
this.insertScanHdInfo(hdd);
}
}
}
}
相关推荐
在更复杂的场景下,例如需要更精确的控制或者更高的并发性能,可以考虑使用`ScheduledExecutorService`,它是Java并发框架`java.util.concurrent`的一部分,提供了更强大的定时任务调度功能。 总之,`TimerTask`和`...
总之,监听器定时调度是Java中实现定时任务的一种有效方式,适用于那些需要在后台定期执行的逻辑。通过熟练掌握 `Timer` 和 `TimerTask`,你可以轻松地为你的应用程序添加这种功能。记得在CSDN等平台学习更多相关...
Quartz是一个开源的作业调度框架,提供了高度可配置的定时任务管理。它支持复杂的调度策略,如按日期、时间表达式、Cron表达式等安排任务。Quartz允许将任务与触发器关联,灵活地控制任务执行。使用Quartz创建任务...
在Java中,有多种实现定时任务调度的方式,包括但不限于Java内置的`java.util.Timer`类、Spring框架的`@Scheduled`注解以及Quartz库。 1. **Java内置的`java.util.Timer`和`TimerTask`**: - `Timer`类用于创建一...
在本话题中,我们将深入学习如何在Spring2框架下利用`TimerTask`实现定时任务,以及在MyEclipse开发环境中,如何与Tomcat服务器配合使用。 【描述】:基于MyEclipse的集成开发环境,我们可以构建Java Web项目,并...
Java的Executor框架提供了线程池管理的相关类,如ThreadPoolExecutor和ScheduledThreadPoolExecutor,后者支持定时或周期性的任务调度。 线程池调度的优点在于可以重用线程,减少线程创建和销毁的开销,提高执行...
- `MainExecutor.java`:可能包含了使用Java定时框架(如Quartz或Spring的TaskScheduler)来定义和执行定时任务的逻辑。 - 定时任务API:如`java.util.Timer`和`java.util.TimerTask`,或者是Spring的`@Scheduled`...
在Java编程中,`TimerTask` 是一个非常实用的类,用于实现周期性的定时任务。`TimerTask` 是 `java.util.Timer` 类的一个子类,它允许开发者定义一个任务,该任务可以在预定的时间间隔内重复执行。下面我们将深入...
Quartz不仅可以调度单个任务,还可以构建一个集群的调度环境,并且可以与数据库交互,支持监听器、插件和集群功能,适合大型分布式系统和需要高可用性的场景。 Quartz还提供了更为复杂的调度表达式,可以精确地定义...
例如,在文件生成监控的场景下,我们可以创建一个内部类继承自TimerTask: ```java class FileStatusChecker extends TimerTask { private String fileName; // 构造器和业务逻辑 ... @Override public void ...
Java提供了多种方式来实现定时调度任务,本篇将深入探讨这些实现方法。 1. **Java内置定时器:java.util.Timer** Java标准库提供了一个`Timer`类,它允许程序员安排在未来某个时间执行一个任务,或者定期重复执行...
虽然Quartz的代码相对复杂,但在需要高级定时任务管理的场景下,它的功能和灵活性是其他框架无法比拟的。 ### 定时器算法 1. **小顶堆**: 小顶堆是一种特殊的完全二叉树,其中每个节点的值都不大于其子节点。在...
Spring框架提供了多种方式来实现定时任务,其中之一就是整合JDK自带的`TimerTask`。本文将详细介绍如何在Spring中使用`TimerTask`实现定时任务调度。 首先,`TimerTask`是Java标准库中的一个类,它实现了`Runnable`...
(1)Timer对调度的支持是基于绝对时间,而不是相对时间的,由此任务对系统时钟的改变是敏感的 (2)所有的TimerTask只有一个线程TimerThread
【TimerTaskDemo】是一个示例程序,展示了Java中的定时任务处理技术,主要涉及`Timer`类和`TimerTask`类的使用。在这个示例中,开发者可能创建了一个`TimerTask`实例来执行特定的任务,然后通过`Timer`类来调度这个...
4. **替代方案**:考虑到`Timer`和`TimerTask`的一些限制,Java 5引入了`ScheduledExecutorService`,它提供了一套更强大且线程安全的定时任务调度接口。在新的项目中,通常推荐使用`ScheduledExecutorService`而...
发布的程序或是重启过服务,那这样的情况下,任务会立即执行,而不是等到第二天的凌晨2点执行。为了,避免这种情况 发生,只能判断一下,如果发布或重启服务的时间晚于定时执行任务的时间,就在此基础上加一天。
这个模块提供了多种定时任务的支持,如基于Java的`@Scheduled`注解、Quartz调度器和`ThreadPoolTaskScheduler`等。其中,`@Scheduled`注解是针对简单定时任务的最简便方式,它允许开发者直接在方法上声明定时规则。 ...
**Quartz** 是一个功能丰富的开源作业调度框架,支持复杂的调度策略,比如定时、周期性执行,甚至可以定义基于日期的触发器。Quartz具有可伸缩性,能够在多线程和分布式环境中工作,适合大型项目。Quartz的核心组件...
在Java编程语言中,`Timer`和`TimerTask`是两个重要的类,它们用于实现定时任务的调度。这个"TimerTask_Demo.zip"文件提供了一个简单的示例,演示了如何利用这两个类来创建一个每日自动执行的任务。下面将详细介绍`...