利用java提供的timer类和timerTask类进行简单的定时任务操作(即排程任务)。
package com.linming.task;
import java.util.Timer;
/**
* @author lin ming
* @date 2012-4-11 下午08:23:41
* @description
*/
public class TimeTask {
/**
* @param args
*/
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new TestTask(), 1000);//程序运行一分钟后执行
// timer.schedule(new TestTask(), 1000, 1000);//程序运行一分钟后执行,且间隔一分钟后循环执行
// timer.schedule(new TestTask(), DateTime);//DateTime为设定的执行时间对象
// timer.schedule(new TestTask(), DateTime, time);//time为延迟时间
}
}
TestTask类
package com.linming.task;
import java.util.TimerTask;
/**
* @author lin ming
* @date 2012-4-11 下午08:25:41
* @description
*/
public class TestTask extends TimerTask {
@Override
public void run() {
System.out.println("定时任务在这里执行");
}
}
基于Spring配置的简单定时任务实现(这里提供核心源码)
applicationContext.xml
<bean id="emailTracker" class="com.linming.task.EmailTracker">
<property name="sendMail" ref="sendMail"/>
</bean>
<bean id="scheduledTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<!-- wait 10 seconds before starting repeated execution -->
<property name="delay" value="0" />
<!-- run every 300 seconds -->
<property name="period" value="300000" />
<property name="timerTask" ref="emailTracker" />
</bean>
<bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref bean="scheduledTask" />
</list>
</property>
</bean>
EmailTracker
public class EmailTracker extends TimerTask {
private SendMail sendMail;
@Override
public void run() {
// 发送邮件的具体实现
}
public SendMail getSendMail() {
return sendMail;
}
public void setSendMail(SendMail sendMail) {
this.sendMail = sendMail;
}
.....
}
再增加一个小示例,源码如下(直接运行能看到结果):
package com.pratise.test;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.util.Timer;
import java.util.TimerTask;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
/**
* @author F3226080
* @date Apr 13, 2012
*
*/
public class JTableDemo {
private Vector vector1 = new Vector();
// private Vector vector2 = new Vector();
private Vector vector3 = new Vector();
JTable student;
JScrollPane pane3;
JPanel panel;
JFrame frame;
int i = 1;//主要用于区别是否成功刷新了页面
public JTableDemo() {
vector1.addElement("提单号");
vector1.addElement("dd");
vector1.addElement("总重量");
vector1.addElement("总卷数");
vector1.addElement("客户名称");
vector1.addElement("有效开始时间");
vector1.addElement("有效结束时间");
vector1.addElement("备注");
}
public void createTable(){
student = new JTable (vector3,vector1);
student.setPreferredScrollableViewportSize(new Dimension(1000, 100));//设置表格的大小
student.setRowHeight (30);//设置每行的高度为20
student.setSelectionForeground (Color.black);//设置所选择行的前景色
student.setGridColor (Color.black);//设置网格线的颜色
student.setShowGrid (true);//是否显示网格线
student.setShowHorizontalLines (true);//是否显示水平的网格线
student.setShowVerticalLines (true);//是否显示垂直的网格线
student.doLayout ();//使表布局行与列
student.setBackground (Color.lightGray);//表格背景
pane3 = new JScrollPane (student);
panel = new JPanel (new GridLayout (0, 1));
panel.setPreferredSize (new Dimension (1000,400));
panel.add (pane3);
frame = new JFrame ("xxxxxxxxx");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.setContentPane (panel);//将Panel加入窗口中
frame.setBounds(200, 200, 1000, 300);
frame.setVisible(true);
}
public static void main(String[] args) {
JTableDemo demo = new JTableDemo();
demo.createTable();
demo.excuteTimerTask();
}
public void excuteTimerTask(){
final Timer timer = new Timer();
TimerTask tt=new TimerTask() {
@Override
public void run() {
vector3.clear();
//你需要处理的查询结果
Vector vector2 = new Vector();
if(i==1) {
vector2.addElement("1021");
vector2.addElement("1021");
vector2.addElement("1021");
vector2.addElement("1021");
vector2.addElement("1021");
vector2.addElement("1021");
vector2.addElement("1021");
vector2.addElement("1021");
} else if(i==3){
vector2.addElement("1111111");
vector2.addElement("1111111");
vector2.addElement("1111111");
vector2.addElement("1111111");
vector2.addElement("1111111");
vector2.addElement("1111111");
vector2.addElement("1111111");
vector2.addElement("1111111");
} else{
vector2.addElement("2222");
vector2.addElement("222");
vector2.addElement("222");
vector2.addElement("22");
vector2.addElement("1111111");
vector2.addElement("1111111");
vector2.addElement("1111111");
vector2.addElement("1111111");
}
i++;
vector3.addElement(vector2);
student = new JTable (vector3,vector1);
pane3 = new JScrollPane (student);
frame.setContentPane(panel);
frame.validate();
}
};
timer.schedule(tt, 1000, 1000);
}
}
分享到:
相关推荐
在这个“java定时任务小例子”中,我们可以看到两个关键文件:`TimerTest.java`和`DoTask.java`,它们分别代表了定时器的任务调度和实际执行任务的组件。 首先,我们来看`TimerTest.java`。这个文件很可能是整个...
Java 定时任务是指在 Java 语言中实现的定时执行任务的机制,通过使用 Timer 和 TimerTask 两个类,可以实现定时执行任务的功能。在这个例子中,我们将实现每天定时执行任务的功能,具体来说,就是在每天的凌晨 2 点...
在Java编程语言中,`TimerTask`和`Timer`是两个关键类,它们用于实现定时任务的调度。这两个类属于`java.util`包,为开发者提供了执行周期性或一次性任务的能力。下面我们将深入探讨如何利用`TimerTask`执行每日定时...
在 TimerManager 这个类里面,大家一定要注意 时间点的问题。如果你设定在凌晨2点执行任务。但你是在2点以后 ...发生,只能判断一下,如果发布或重启服务的时间晚于定时执行任务的时间,就在此基础上加一天。
Java定时任务的实现是软件开发中常见的需求,用于在特定时间执行特定的业务逻辑,例如数据备份、报表生成等。本文将详细介绍两种常用的Java定时任务实现方式:Timer类和Spring框架的Quartz调度器。 首先,第一种...
在Java中,我们可以利用`java.util.Timer`类和`java.util.TimerTask`类来实现简单的定时任务,但这种实现方式存在线程安全问题。在Web应用中,我们可以利用Servlet容器提供的特性来更优雅地处理定时任务,这就是描述...
Java定时任务调度是Java开发中常见的一种功能,用于在特定时间执行特定的任务,例如数据同步、日志清理、报表生成等。在Java中,有多种实现定时任务调度的方式,包括但不限于Java内置的`java.util.Timer`类、Spring...
Java定时任务是Java编程中一个重要的特性,它允许开发者安排任务在特定的时间点或周期性地执行。在Java中,我们可以使用内置的`java.util.Timer`类和`java.util.concurrent.ScheduledExecutorService`来实现定时任务...
java提供了多种方式来实现定时任务,包括使用java.util.Timer和java.util.TimerTask类、使用java.lang.Thread类的sleep方法、使用java.util.concurrent.ScheduledExecutorService类等。 在本例子中,使用的是java....
在Java编程中,定时执行某个任务是一项常见的需求,例如定期备份数据、发送邮件或执行维护操作等。要实现这一功能,Java提供了多种解决方案。这里我们将深入探讨两种主要的方法:Java的`java.util.Timer`类和Java 5...
`java.util.Timer`和`java.util.TimerTask`是Java标准库中提供的一对基础定时任务工具。通过创建`Timer`实例并调度`TimerTask`,可以在指定的延迟后或定期执行任务。例如: ```java Timer timer = new Timer(); ...
Java定时任务调度是Java应用程序中常见的一种功能,用于在特定时间执行特定任务,例如定期备份、数据清理等。`Timer`类是Java中用于实现定时任务调度的一个基础工具,它位于`java.util`包中。在本文中,我们将深入...
总结来说,Java提供了多种方式来实现定时任务的退出,包括TimerTask的cancel()方法、Timer的cancel()方法以及ScheduledFuture的cancel()方法。选择哪种方式取决于具体的需求,如任务类型、是否需要立即停止正在执行...
Java中的定时任务与定时器是实现自动化操作的关键技术之一,特别是在需要周期性执行某些功能的场景下,如数据同步、日志清理、定时发送邮件等。本文将深入探讨如何使用Java标准库中的`java.util.Timer`和`java.util....
`Timer`类是Java早期提供的定时任务实现,它允许我们创建一个定时器对象,然后调度`TimerTask`任务来执行。以下是如何使用`Timer`和`TimerTask`的基本步骤: ```java import java.util.*; class TimerTaskDemo ...
JAVA定时任务的实现是通过Timer和TimerTask两个类的配合工作实现的。Timer类是一个调度师,它可以安排执行某个任务,而TimerTask类是具体要完成的任务。通过创建一个TimerTask对象,然后用一个Timer类的对象来安排...
在Java编程中,`TimerTask`是一个非常实用的类,用于执行定期的异步任务。这个定时任务系统是基于`java.util.Timer`类构建的,它允许开发者在指定的时间间隔执行重复或一次性任务。在本项目中,`TimerTask`被用来...