好几天没写了,今天看到一个问题是“sevlet中如何使用定时访问数据库”?
第一个反映就是crontab和quarts,but 其实JDK中提供了这样的工具Timer
public static void main(String[] args) throws SQLException {
//DBUtil.getTableName("ted");
Timer tr = new Timer();
Calendar c2 = new GregorianCalendar(2010,Calendar.DECEMBER,20,15,13,00);
System.out.println(c2.getTime());
tr.schedule(new task(), new Date(), 60*1000); //每隔60秒调度一次
}
public class task extends TimerTask{
public void run() {
System.out.println("开始执行自动关机操作...");
}
}
schedule是定时调度method,look it's source code:
private TaskQueue queue = new TaskQueue();
public void schedule(TimerTask task, Date firstTime, long period) {
if (period <= 0)
throw new IllegalArgumentException("Non-positive period.");
sched(task, firstTime.getTime(), -period);
}
private void sched(TimerTask task, long time, long period) {
if (time < 0)
throw new IllegalArgumentException("Illegal execution time.");
//此处的queue是TaskQueue类型,是innerClass,感觉有点Hashmap的Entry的思想吧,O(∩_∩)O~
synchronized(queue) {
if (!thread.newTasksMayBeScheduled)
throw new IllegalStateException("Timer already cancelled.");
synchronized(task.lock) {
if (task.state != TimerTask.VIRGIN)
throw new IllegalStateException(
"Task already scheduled or cancelled");
task.nextExecutionTime = time;
task.period = period;
task.state = TimerTask.SCHEDULED;
}
queue.add(task);
if (queue.getMin() == task)
queue.notify();
}
}
具体的逻辑不说了,看看schedule的第一个参数TimerTask task,其实TimerTask是一个抽象线程类,一定要实现run了。(PS:哥多线程是弱项啊)
public abstract class TimerTask implements Runnable
分享到:
相关推荐
Java.util.Timer类是Java标准库提供的一种简单但功能有限的定时任务执行机制。它允许开发者在指定的时间间隔或特定时间点执行任务,非常适合处理一次性或周期性的后台操作。本篇文章将深入探讨如何使用Timer和...
Java.util.ConcurrentModificationException 异常问题详解 ConcurrentModificationException 异常是 Java 中一个常见的异常,它发生在 Iterator 遍历集合时,集合同时被修改引起的异常。在 Java 中,集合类如 ...
Java提供了多个类和接口来处理日期和时间,其中`java.util.Date`和`java.sql.Date`是两个经常被混淆和讨论的类,尤其是在数据库编程中。由于这两个类在概念和功能上有所不同,理解它们之间的区别对于编写有效的Java...
标题中提到了“java.util.concurrent.uml.pdf”,这表明文件是一份Java并发编程工具包java.util.concurrent的UML(统一建模语言)类结构图的PDF格式文件。UML图能够帮助开发者理解Java并发包中的类、接口及其关系,...
标题“java.util.pdf”暗示这是一个关于Java编程语言中util包的文档。由于描述和标签均重复标题,我们可以推断文档重点在于解释和...学习和理解java.util包中的每一个类和接口,对于Java开发者来说是基础且必不可少的。
Java Timer定时器主要是通过java.util.Timer和java.util.TimerTask两个类来实现的。 Java.util.Timer类 java.util.Timer类是Java Timer定时器的核心类,它可以执行任务并且可以指定任务的执行频率。Timer类有两种...
在Java编程语言中,`Timer`类是Java.util包下的一个关键组件,它主要用于调度周期性的任务执行。这个`Timer`类提供了定时器的功能,能够按照预设的时间间隔执行任务,比如更新UI、执行定时检查等。在描述中提到的是...
Java.util.Timer 是 Java 平台中用于实现定时任务调度的一个工具类。它允许开发者安排任务在将来某个特定时刻或按照一定的周期重复执行。任务调度在软件开发中扮演着重要角色,尤其是在需要自动化处理、定期检查或...
Java提供了多种实现定时任务的机制,这里主要介绍两种:Java.util.Timer类和java.util.concurrent.ScheduledExecutorService接口。 1. Java.util.Timer类: Timer类是Java早期提供的定时任务工具,它可以安排在...
Java内置了多种实现定时任务的方式,其中`java.util.Timer`类是最常用的一种。 #### 二、`java.util.Timer`类简介 `java.util.Timer`类提供了在将来某个时刻或定期执行任务的能力。它使用`java.util.TimerTask`...
Java.util包是Java标准库中的核心包之一,它包含了大量用于日常编程的工具类和接口。这个包在Java 2版本中得到了显著增强,引入了许多重要的数据结构和算法,为Java程序员提供了更丰富的功能。 首先,Java.util包中...
Timer 类位于 java.util 包中,提供了多种构造方法和方法来实现延迟执行任务。 TimerTask TimerTask 是一个抽象类,用于定义需要执行的任务。它实现了 Runnable 接口,因此可以被线程执行。TimerTask 类位于 java....
java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。 javax.accessibility 定义了用户界面组件与提供对这些组件进行访问的辅助技术之间的协定。 javax....
java.util.concurrent.atomic java.util.concurrent.locks java.util.jar java.util.logging java.util.prefs java.util.regex java.util.zip javax.accessibility javax.activity javax.crypto javax....
在Java中,我们可以利用内置的`java.util.Timer`类或者Spring框架的`@Scheduled`注解来实现定时任务。 一、Java `java.util.Timer` 类 `java.util.Timer` 类和`TimerTask` 类是Java的标准库提供的定时任务工具。`...
timer.schedule(task, 0, 5000); // 每隔5秒执行一次 } } ``` 在这个例子中,`TimerTask`是一个实现了`run`方法的匿名内部类,代表要执行的任务。`schedule`方法的第二个参数是首次执行的延迟,第三个参数是两次...
为了使时钟持续更新,你需要使用java.util.Timer和TimerTask类。定时器会在指定间隔执行任务,这里的任务就是更新时间标签的文本。每次触发时,获取系统当前时间(通过java.time包或java.util.Calendar),并将时间...
为了满足这些需求,Java自1.3版本起引入了`java.util.Timer`类,该类提供了一种简单的方式来管理周期性或一次性任务。 #### 12.6 用Timer类调度任务 ##### 12.6.1 Timer类简介 `java.util.Timer`类是Java中用于...
通过上述内容,我们不仅了解了如何在Java中使用`java.util.Timer`和`java.util.TimerTask`来实现定时任务,而且还学习了如何在Web应用中利用这些工具来完成周期性的任务。这种方法特别适用于需要定期执行某些操作的...
首先,我们来了解Java中的定时器类`java.util.Timer`和`java.util.TimerTask`。`Timer`类用于创建和管理定时任务,而`TimerTask`是所有定时任务的基类,我们需要继承它并重写`run()`方法来定义需要执行的任务。 ...