`
喻红叶
  • 浏览: 41114 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论

Java定时器实现更替执行

 
阅读更多

Java定时器Timer其实是一个线程类,TimerTask则实现了Runnable接口,TimerTask的类是这样定义的:abstract class TimerTask extends Object implements Runnable,其中的run()方法并未实现。关于这两个类的语法细节,看API足够了解。

我们都知道Timer可以以固定的频率来执行某一定时任务,比如每天凌晨2:00执行数据库的统计操作。但是怎样实现以不同的频率执行任务呢?比如以2s,3s,2s,3s...的频率来执行任务呢?

TimerTask的任务是在其run()方法中被执行的,这个是Timer自动调用TimerTask的run(),如果想解决以不同频率执行任务,那么在执行TimerTask.run()的时候再创建一个TimerTask任务,让这个任务以另外一种频率执行。根据这个思路,我们可以有两种解决方式:

第一种是定义两种不同频率的任务,交替执行

import java.util.Timer;
import java.util.TimerTask;

public class TranditionTimer2 {
	
	//这个任务两秒执行一次
	static class Task2000 extends TimerTask {
		public void run() {
			System.out.println("两秒炸一次");
			new Timer().schedule(new Task4000(), 2000);
		}
	}
	
	//这个任务四秒执行一次
	static class Task4000 extends TimerTask {
		public void run() {
			System.out.println("四秒炸一次");
			new Timer().schedule(new Task2000(), 4000);
		}
	}
	

	public static void main(String[] args) {
		new Timer().schedule(new Task2000(),0);

	}
}

第二种是通过一个计数器来判断这次任务执行时,应该延迟的时间
import java.util.Timer;
import java.util.TimerTask;

public class TranditionTimer3 {
	
	static class MyTask extends TimerTask {
		//定义类变量,通过类变量来计数,通过改变类变量的值来控制延迟时间
		static long counter = 0;
		
		public void run() {
			//counter的值只可能是0和1,counter*2000也就只可能是0和2000
			counter = (counter + 1) % 2;
			System.out.println("两秒炸一次");
			new Timer().schedule(new MyTask(), 2000 + (counter * 2000));
		}
	}
	
	public static void main(String[] args) {
		new Timer().schedule(new MyTask(),0);

	}
}

分享到:
评论

相关推荐

    C#定时器实现自动执行的方法

    本文实例讲述了C#定时器实现自动执行的方法。分享给大家供大家参考。具体实现方法如下: 代码如下: //下面讲一个打开窗体定时执行按钮的东西 private void Form1_Load(object sender, EventArgs e) { System.Timers...

    JAVA定时器JAVA定时器.pdf

    在 Spring 框架中,JAVA定时器可以与Quartz框架集成,实现自动执行任务的功能。 1. JAVA定时器的基本概念 JAVA定时器是基于Quartz框架的任务调度器,用于在指定的时间执行特定的任务。这类任务可以是任何类型的...

    spring java 定时器 执行两次 quartz

    Quartz是一款强大的开源任务调度库,它能够与Java应用程序无缝集成,实现复杂的时间触发任务。当我们遇到Spring定时器执行两次或者更多次的问题时,这通常是由于配置不当或者多线程并发导致的。下面将详细介绍如何...

    Java定时器的使用 Java程序

    Java定时器(java.util.Timer)是Java标准库中用于调度任务执行的重要工具,它允许我们按照预设的时间间隔执行特定的任务。在Java程序设计中,定时器常常用于实现周期性的任务,比如定时备份数据、定时检查系统状态...

    java 定时器(Timer)

    Java定时器(Timer)是Java Swing库中的一个类,它提供了调度任务在未来某个时间执行的能力。这个类主要用于在GUI应用程序中实现定时触发某些操作,比如更新界面、执行动画或者执行周期性的后台任务。Timer类结合了...

    Java定时器

    在`TimerCountDemo.java`这个示例程序中,我们可以预期它可能展示了如何创建一个简单的定时器,以实现以圈计时(可能是循环执行)和以秒计时的功能。这两种计时方式在实际应用中非常常见,例如倒计时或者周期性更新...

    时间轮定时器java实现

    本篇文章将深入探讨如何使用Java实现两种常见的定时器机制:基于最小堆的定时器和基于时间轮的定时器。 首先,让我们来了解基于最小堆的定时器。最小堆(Min Heap)是一种特殊的树形数据结构,其每个父节点的值都...

    Java定时器简例

    ### Java定时器实现详解...综上所述,这个Java定时器实现通过组合`Timer`、`Clock`和`Task`等类,构建了一个灵活、可扩展的定时任务执行框架。开发者可以根据具体需求调整任务逻辑和执行频率,实现各种复杂的定时功能。

    java定时器设置及停止的方法

    `TimerTask`是`Timer`调度的任务,是一个抽象类,你需要继承并实现`run()`方法来定义要定时执行的逻辑。以下是如何使用`Timer`和`TimerTask`创建定时任务: ```java Timer timer = new Timer(); TimerTask task = ...

    java定时器的实现

    ### Java定时器的实现 #### 一、概述 在Java编程中,定时执行特定任务是一种常见的需求。例如,定期清理缓存、定时发送邮件或执行数据同步等操作。Java提供了多种方式来实现定时任务,其中之一就是利用内置的`java...

    java定时器

    java定时器,import java.util.Calendar; import java.util.Date; import java.util.Timer; import java.util.TimerTask; 规定每天几点执行一次

    java 定时器 spring 定时器

    Java定时器和Spring定时器是Java开发中用于执行周期性任务的重要工具,它们在系统维护、数据同步、报告生成等场景中发挥着关键作用。本文将深入探讨这两个概念,以及如何在Spring框架中配置和使用定时器。 首先,...

    java定时器的使用

    在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。 对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。

    Java定时器框架(Quartz)

    Java定时器框架Quartz是Java开发中用于任务调度的一个强大工具,它允许开发者精确地控制任务的执行时间,包括一次性任务和周期性任务。Quartz以其灵活性和稳定性,在企业级应用中广泛使用,尤其在需要定期执行后台...

    java定时器实现实时访问数据库以免数据库链接超时

    在Java编程中,为了保持数据库连接的活性,避免因长时间无操作导致的连接超时问题,我们可以使用定时器(Timer)来定期执行某些任务,比如心跳检测。下面将详细讲解如何利用Java定时器实现这一功能。 首先,我们...

    java定时器服务!!

    总结来说,Java定时器服务主要通过`Timer`和`TimerTask`实现,用于计划未来的任务执行。当需求更复杂时,可以转向`ScheduledExecutorService`。在实际编程中,理解这些类的工作原理和使用方式,能帮助我们更好地管理...

    JAVA定时器JAVA定时器

    JAVA定时器,只要服务开启,就能指定某些代码在某个时刻执行,例如:监狱里罪犯的余刑天数,每天都要减少,就可以设置一个定时器在每天的23:59:59来执行减少余刑天数的天。

    java定时器.rar

    Java定时器(Timer)是Java语言中用于调度任务的一个重要工具,它可以帮助我们在特定时间执行一次或重复执行某个任务。这个“java定时器.rar”压缩包可能包含了关于如何使用Java定时器的相关示例代码和教程。 Java...

    java定时器例子

    java定时器例子,使用 java.util.TimerTask 类来实现定时执行

Global site tag (gtag.js) - Google Analytics