- 浏览: 431467 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (164)
- Lucence (1)
- Hibernate (16)
- java综合技术点 (31)
- struts (4)
- dwr (2)
- IT生活 (21)
- spring (12)
- tomcat (1)
- 数据库 (11)
- tags (0)
- 线程安全 (11)
- 设计模式 (1)
- 缓存 (4)
- WebService (5)
- Apache软件 (7)
- java定时器 (1)
- plugin开发用插件 (3)
- Web前端 (5)
- js (3)
- Android (2)
- 摘抄 (0)
- jdbc (1)
- FTP (1)
- jetty (1)
- 图表 (1)
- Exception (1)
- 问题点整理 (1)
- 备忘录 (2)
- 分布式 (0)
- hadoop (0)
- JVM (5)
- GC (1)
- 消息中间件 (0)
最新评论
-
honganlei:
个人推荐一个,虽然是第三方的,但是提供的都是官方下载地址htt ...
常用jar包下载地址 -
chengt:
java jar包下载我一般用以下两个网站都可以http:// ...
常用jar包下载地址 -
songshuaiyang:
angryid 写道国内的网站,速度还可以jar包下载网站打不 ...
常用jar包下载地址 -
angryid:
国内的网站,速度还可以jar包下载网站
常用jar包下载地址 -
angryid:
我必须要评论一下,我发现一个jar包下载网站,javaeye的 ...
常用jar包下载地址
http://blog.sina.com.cn/s/blog_401a71d1010005cc.html
ScheduleIterator.java
import java.util.Calendar;
import java.util.Date;
public class ScheduleIterator {
private final int hourOfDay, minute, second;
private final Calendar calendar = Calendar.getInstance();
public ScheduleIterator(int month, int day, int hourOfDay, int minute,
int second) {
this(month, day, hourOfDay, minute, second, new Date());
}
public ScheduleIterator(int month, int day, int hourOfDay, int minute,
int second, Date date) {
this.hourOfDay = hourOfDay;
this.minute = minute;
this.second = second;
calendar.setTime(date);
calendar.set(Calendar.MONTH, month - 1);
calendar.set(Calendar.DAY_OF_MONTH, day);
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, second);
calendar.set(Calendar.MILLISECOND, 0);
if (!calendar.getTime().before(date)) {
calendar.add(Calendar.DATE, -1);
}
}
public Date next() {
calendar.add(Calendar.MINUTE, 1);
return calendar.getTime();
}
}
Scheduler.java
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class Scheduler {
class SchedulerTimerTask
extends TimerTask {
private SchedulerTask schedulerTask;
private ScheduleIterator iterator;
public SchedulerTimerTask(SchedulerTask schedulerTask,
ScheduleIterator iterator) {
this.schedulerTask = schedulerTask;
this.iterator = iterator;
}
public void run() {
schedulerTask.run();
reschedule(schedulerTask, iterator);
}
}
private final Timer timer = new Timer();
public Scheduler() {
}
/**
* Terminates this <code>Scheduler</code>, discarding any currently scheduled tasks. Does not interfere with a currently executing task (if it exists). Once a scheduler has been terminated, its execution thread terminates gracefully, and no more tasks may be scheduled on it.
* <p>
* Note that calling this method from within the run method of a scheduler task that was invoked by this scheduler absolutely guarantees that the ongoing task execution is the last task execution that will ever be performed by this scheduler.
* <p>
* This method may be called repeatedly; the second and subsequent calls have no effect.
*/
public void cancel() {
timer.cancel();
}
/**
* Schedules the specified task for execution according to the specified schedule. If times specified by the <code>ScheduleIterator</code> are in the past they are scheduled for immediate execution.
* <p>
* @param schedulerTask task to be scheduled
* @param iterator iterator that describes the schedule
* @throws IllegalStateException if task was already scheduled or cancelled, scheduler was cancelled, or scheduler thread terminated.
*/
public void schedule(SchedulerTask schedulerTask,
ScheduleIterator iterator) {
Date time = iterator.next();
if (time == null) {
schedulerTask.cancel();
}
else {
synchronized (schedulerTask.lock) {
if (schedulerTask.state != SchedulerTask.VIRGIN) {
throw new IllegalStateException("Task already scheduled " +
"or cancelled");
}
schedulerTask.state = SchedulerTask.SCHEDULED;
schedulerTask.timerTask =
new SchedulerTimerTask(schedulerTask, iterator);
System.out.println("time:s=" + schedulerTask.timerTask + "time:t=" +
time.toLocaleString());
timer.schedule(schedulerTask.timerTask, time);
}
}
}
private void reschedule(SchedulerTask schedulerTask,
ScheduleIterator iterator) {
Date time = iterator.next();
if (time == null) {
schedulerTask.cancel();
}
else {
synchronized (schedulerTask.lock) {
if (schedulerTask.state != SchedulerTask.CANCELLED) {
schedulerTask.timerTask =
new SchedulerTimerTask(schedulerTask, iterator);
System.out.println("time1:s=" + schedulerTask.timerTask + "time1:t=" +
time.toLocaleString());
timer.schedule(schedulerTask.timerTask, time);
}
}
}
}
}
SchedulerTask.java
import java.util.TimerTask;
/**
* A task that can be scheduled for recurring execution by a {@link Scheduler}.
*/
public abstract class SchedulerTask
implements Runnable {
final Object lock = new Object();
int state = VIRGIN;
static final int VIRGIN = 0;
static final int SCHEDULED = 1;
static final int CANCELLED = 2;
TimerTask timerTask;
protected SchedulerTask() {
}
public abstract void run();
public boolean cancel() {
synchronized (lock) {
if (timerTask != null) {
timerTask.cancel();
}
boolean result = (state == SCHEDULED);
state = CANCELLED;
return result;
}
}
public long scheduledExecutionTime() {
synchronized (lock) {
return timerTask == null ? 0 : timerTask.scheduledExecutionTime();
}
}
}
AlarmClock.java
import java.text.SimpleDateFormat;
import java.util.Date;
import java.sql.*;
public class AlarmClock {
private Connection con = null;
private Statement stmt = null;
private ResultSet rs = null;
private final Scheduler scheduler = new Scheduler();
private final SimpleDateFormat dateFormat =
new SimpleDateFormat("dd MMM yyyy HH:mm:ss.SSS");
private final int month, day, hourOfDay, minute, second;
private final String content;
public AlarmClock(int month, int day, int hourOfDay, int minute, int second,
String content) {
this.month = month;
this.day = day;
this.hourOfDay = hourOfDay;
this.minute = minute;
this.second = second;
this.content = content;
}
public void start() {
scheduler.schedule(new SchedulerTask() {
public void run() {
soundAlarm();
}
private void soundAlarm() {
// 在这里放要执行的东西
System.out.println( "我* . 执行到这儿了. "+content);
}
}
, new ScheduleIterator(month, day, hourOfDay, minute, second));
}
public static void main(String[] args) {
AlarmClock alarmClock = new AlarmClock(3, 14, 16, 31, 40,
"hello world !!!");
alarmClock.start();
}
}
发表评论
-
RSA算法 非对称加密算法/数字签名算法
2015-12-09 16:42 986转自 http://security.group.iteye ... -
加密解密、签名验签
2015-12-09 16:29 499转自http://lvbin0502.iteye.com/b ... -
深入理解JVM
2014-09-25 17:32 717转自 http://blog.sina.com.cn/s/b ... -
LinkedHashMap和HashMap、HashTable的比较使用
2014-07-11 09:45 858转自 http://www.cnblogs.com/hubi ... -
java日期函数处理
2013-09-29 16:53 964Calendar cal = GregorianCalenda ... -
对象池技术
2011-03-21 17:11 59591 对象池技术的原理: 对象池技术在服务器开发上应用 ... -
JAVA开发者最常去的20个英文网站
2011-03-21 16:58 983转自 http://topmanopensource. ... -
日期工具类
2011-02-16 16:34 1074转自 http://www.iteye.com/topic/ ... -
log4j
2011-01-27 09:05 1002好处:便于维护与管理,如果系统崩溃或被黑客攻击,查日志就知 ... -
正则顺口溜
2011-01-22 11:21 1036http://cons-mora.iteye.com/blog ... -
Pattern和Matcher
2011-01-22 11:00 2542转载 http://liujinpan75.iteye.com ... -
java正则表达式
2011-01-22 10:35 976http://geeksun.iteye.com/blog/3 ... -
正则表达式的用法
2011-01-22 10:31 919http://cool1314521ok-qq-com.ite ... -
java定时器 schedule和scheduleAtFixedRate区别
2011-01-12 16:57 7513转自http://wangzjie.iteye.c ... -
java定时器案例
2011-01-12 15:52 1296转自http://tomenjoy.iteye.com/blo ... -
java定时器
2011-01-12 15:45 927转自 http://qinshanwu.iteye.com/b ... -
java对象的序列化和反序列化
2010-12-28 22:07 828转自http://www.iteye.com/topi ... -
架构师面试题参考
2010-12-11 13:30 9993一、牛人出的面试题如 ... -
Java的垃圾回收机制
2010-12-11 13:28 1226Java的垃圾回收机制是Java虚拟机提供的能力,用于在空闲时 ... -
HttpSession理解
2010-12-10 13:37 47141 如果在jsp中没有显式使用 <%@page ses ...
相关推荐
2. **线程与任务调度**:在多线程环境中,定时任务通常会创建一个单独的线程,以便在主程序运行的同时独立执行任务。这样不会阻塞主线程,提高系统效率。 3. **Java的定时任务工具**:Java提供了多种实现定时任务的...
- **应用场景**:在 Linux 下,如果需要定时执行某些程序,例如备份数据、发送邮件等,可以利用 Cron 来实现自动化处理。 #### 二、Cron 配置文件介绍 - **crontab**: 用户级别的 Cron 配置文件,用于设置个人用户...
【标题】"定时任务完整案例 Java quartz" 涉及的核心技术是Java的调度库Quartz,它是一个开源的工作调度框架,广泛应用于企业级应用中,用于执行定时任务。Quartz能够帮助开发者创建、调度和执行任务,实现高度灵活...
`Shell定时执行`指的是通过设置定时任务,让特定的Shell脚本在预设的时间自动运行,这对于系统维护、数据备份、日志清理等周期性任务非常实用。本文将详细讲解如何使用Shell进行定时执行。 首先,我们需要了解Linux...
【Java源码】基于Quartz定时调度jar包的执行案例.zip 该定时器Demo用于定时执行制定路径下的jar包的编译,也可以用于普通的任务调度.通过对任务的查询修改删除来管理整个列表文件.可以通关开启和关闭来更改jar的开始...
【Windows服务定时执行SQL】是一种常见的任务自动化场景,主要用于定期执行数据库备份、数据同步或运行维护脚本等操作。在Windows操作系统中,通过创建服务应用程序并结合编程语言(如C#)可以实现这一功能。本项目...
2. **创建定时任务**: 创建一个名为`Task_LED`的任务,该任务负责控制LED的闪烁。任务应该包含一个循环,其中包含点亮LED、延迟一段时间然后熄灭LED的步骤。为了实现定时,我们可以使用微内核提供的延时函数,如`...
这个易语言 Crontab 定时任务执行模块 v1.2 则是将这种功能移植到了易语言环境中,让开发者能够方便地在易语言程序中实现定时任务的功能。 该模块特别之处在于支持秒级别的精度,这意味着你可以设置更为精确的定时...
Java定时任务是软件开发中一个不可或缺的特性,它允许程序在特定时间执行预定的任务,而无需用户干预。在Java世界里,实现定时任务的方式多种多样,包括但不限于使用Java内置的`java.util.Timer`和`java.util....
在Spring框架中,定时任务是通过Spring的定时容器(Spring Task)实现的,它提供了一种灵活、可扩展的方式来执行周期性的任务。Spring Task也被称为Spring的调度器,它可以让我们在应用程序中添加定时任务,无需依赖...
2. **任务执行**:根据任务的执行间隔,调度器应在适当的时间调用任务函数。 3. **多任务管理**:确保同时可以处理多个任务,避免冲突和资源争用。 4. **任务取消**:提供方法取消不再需要的任务。 5. **任务状态...
本压缩包文件包含的就是一系列关于如何在Windows环境下定时执行Python程序的实例代码和指导。 在Windows系统下,我们可以借助几种不同的方法来实现Python程序的定时执行: 1. **Windows计划任务 (Task Scheduler)*...
在Linux系统中,定时执行任务是一项非常实用的功能,尤其对于自动化运维、系统监控以及资源管理等方面至关重要。本文将深入解析如何在Linux环境下设置定时任务来定期执行特定操作,特别是删除日志或无用文件,以释放...
本测试案例旨在展示如何使用Quartz来创建、管理和执行定时任务。 首先,我们需要在项目中引入Quartz的依赖库。对于Maven项目,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org.quartz-scheduler ...
在这个案例中,我们关注的是一个定时启动程序的源代码。 定时启动程序是计算机程序的一种,它的主要功能是在预设的时间点自动启动另一程序或执行特定任务。这类程序在日常应用中非常广泛,比如系统维护、自动备份、...
这个压缩包文件"shell脚本定时执行logstash任务异常mail465发邮件.rar"可能包含了一个用于监控Logstash任务的shell脚本,当Logstash工作出现异常时,脚本会自动通过SMTP服务器发送邮件通知。 1. **shell脚本**:...
2. **创建Job类**:编写实现`Job`接口的类,定义需要定时执行的任务逻辑。 3. **创建Trigger**:根据需求创建触发器,设定执行频率和时间。 4. **注册Job和Trigger**:将Job和Trigger添加到Scheduler实例中,告诉...
2. **使用Windows任务计划程序**:利用Windows内置的任务计划程序来安排定时任务的执行。 3. **测试**:在正式部署之前,务必对定时任务进行充分的测试,确保其能够按照预期正常运行。 #### 五、案例分析 假设我们...
一般定时任务配置都需要相互的依赖,代码量多也不简洁,也得有任务管理器管理,此版本的定时任务本着简洁而去配置只需两步 ...二,相对的类和方法 <bean id="myTaskXml" class="test.task"></bean>
【定时任务测试样例】是基于SpringBoot框架和Quartz库设计的一个...通过这个案例,开发者可以了解到如何在微服务架构中实现灵活的定时任务管理和控制,这对于构建自动化运维系统或大数据处理平台具有重要的实践价值。