iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >Java线程之Timer定时器
  • 758
分享到

Java线程之Timer定时器

java教程Java线程Timer定时器 2018-03-22 03:03:45 758人浏览 无得
摘要

定时/计划功能主要使用的就是Timer对象,它在内部还是使用多线程的方式进行处理,所以它和线程技术还是有非常大的关联。Timer类主要作用就是设置计划任务,但封装任务的类却是TimerTask类。TimerTask类是一个抽象类。执行任务的

定时/计划功能主要使用的就是Timer对象,它在内部还是使用多线程的方式进行处理,所以它和线程技术还是有非常大的关联。

Timer类主要作用就是设置计划任务,但封装任务的类却是TimerTask类。TimerTask类是一个抽象类。

执行任务的时间晚于当前时间-----在未来执行的效果

import java.util.Date;
import java.util.TimerTask;
 
public class MyTask extends TimerTask{
 
	@Override
	public void run() {
		System.out.println("任务执行了, 时间为:" + new Date());
	}
}
 
public class Test1 {
	public static void main(String[] args){
		System.out.println("当前时间为: " + new Date());
		Calendar calendarRef = Calendar.getInstance();
		calendarRef.add(Calendar.SECOND, 10);
		Date runDate = calendarRef.getTime();
		
		MyTask task = new MyTask();
        // 查看Timer构造方法,创建一个Timer就是启动一个新的线程
		Timer timer = new Timer();
		timer.schedule(task, runDate); // 定时器在某个时间(runDate)执行某个任务(task)
	}
}

免费在线学习视频分享:java视频

Timer中允许有多个TimerTask任务及延时的测试

TimerTask是以队列的方式一个一个被顺序性地执行,所以执行时间有可能和预期的时间不一致,因为前面的任务有可能消耗的时间较长,则后面的任务运行的时间也被延后。

import java.util.Date;
import java.util.TimerTask;
 
public class MyTaskA extends TimerTask{
 
	@Override
	public void run() {
		try {
			System.out.println("A begin timer, 时间为:" + new Date());
			Thread.sleep(20000);
			System.out.println("A   end timer, 时间为:" + new Date());
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
}

import java.util.Date;
import java.util.TimerTask;
 
public class MyTaskB extends TimerTask{
 
	@Override
	public void run() {
		System.out.println("B begin timer, 时间为:" + new Date());
		System.out.println("B   end timer, 时间为:" + new Date());
	}
}
 
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
 
public class Test1 {
	public static void main(String[] args){
		System.out.println("当前时间为: " + new Date());
		Calendar calendarRef1 = Calendar.getInstance();
		Date runDate1 = calendarRef1.getTime();
		System.out.println("A计划时间为: " + runDate1);
		
		Calendar calendarRef2 = Calendar.getInstance();
		calendarRef2.add(Calendar.SECOND, 10);
		Date runDate2 = calendarRef2.getTime();
		System.out.println("B计划时间为: " + runDate2);
		
		MyTaskA task1 = new MyTaskA();
		MyTaskB task2 = new MyTaskB();
		Timer timer = new Timer();
		timer.schedule(task1, runDate1); // 定时器在某个时间(runDate)执行某个任务(task)
		timer.schedule(task2, runDate2);
	}
}

schedule(TimerTask task, Date firstTime, long period)

该方法的作用是在指定的日期之后按指定的间隔周期,无限循环地执行某一任务。

import java.util.Date;
import java.util.TimerTask;
 
public class MyTask extends TimerTask{
 
	@Override
	public void run() {
		System.out.println("任务开始: "+new Date());
		System.out.println("mytask...");
		System.out.println("任务结束: "+new Date());
	}
}
 
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
 
public class Run {
	public static void main(String[] args){
		System.out.println("当前时间为:"+new Date());
		Calendar c = Calendar.getInstance();
		c.add(Calendar.SECOND, 10);
		Date runDate1 = c.getTime();
		System.out.println("计划时间为:"+runDate1);
		
		MyTask myTask = new MyTask();
		Timer timer = new Timer();
		timer.schedule(myTask, runDate1, 10000);
	}
}

TimerTask类的cancel()方法

TimerTask类中的cancel()方法的作用是将自身从任务队列中进行清除.

import java.util.Date;
import java.util.TimerTask;
 
public class MyTaskA extends TimerTask{
 
	@Override
	public void run() {
		System.out.println("A run timer="+new Date());
		this.cancel();
		System.out.println("A任务自己移除自己");
	}
}
 
import java.util.Date;
import java.util.TimerTask;
 
public class MyTaskB extends TimerTask{
 
	@Override
	public void run() {
		System.out.println("B run timer="+new Date());
	}
}
 
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
 
public class Run {
	public static void main(String[] args){
		System.out.println("当前时间为:"+new Date());
		Calendar c = Calendar.getInstance();
		Date runDate1 = c.getTime();
		System.out.println("计划时间为:"+runDate1);
		
		MyTaskA myTaskA = new MyTaskA();
		MyTaskB myTaskB = new MyTaskB();
		Timer timer = new Timer();
		timer.schedule(myTaskA, runDate1, 4000);
		timer.schedule(myTaskB, runDate1, 4000);
	}
}

Timer的cancel()方法

和TimerTask类中的cancel()方法清除自身不同,Timer类中的cancel()方法作用是将任务队列中全部的任务进行清空。

import java.util.Date;
import java.util.TimerTask;
 
public class MyTaskA extends TimerTask{
 
	@Override
	public void run() {
		System.out.println("A run timer="+new Date());
		this.cancel();
		System.out.println("A任务自己移除自己");
	}
}
 
import java.util.Date;
import java.util.TimerTask;
 
public class MyTaskB extends TimerTask{
 
	@Override
	public void run() {
		System.out.println("B run timer="+new Date());
	}
}
 
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
 
public class Run {
	public static void main(String[] args){
		System.out.println("当前时间为:"+new Date());
		Calendar c = Calendar.getInstance();
		Date runDate1 = c.getTime();
		System.out.println("计划时间为:"+runDate1);
		
		MyTaskA myTaskA = new MyTaskA();
		MyTaskB myTaskB = new MyTaskB();
		Timer timer = new Timer();
		timer.schedule(myTaskA, runDate1, 4000);
		timer.schedule(myTaskB, runDate1, 4000);
	}
}

schedule(TimerTask task, long delay)

该方法的作用是以执行schedule(TimerTask task, long delay)方法当前的时间为参考时间,在此时间基础上延迟指定的毫秒数后执行一次TimerTask任务。

import java.util.Date;
import java.util.TimerTask;
 
public class MyTask extends TimerTask{
 
	@Override
	public void run() {
		System.out.println("A run timer="+new Date());
	}
}
 
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
 
public class Run {
	public static void main(String[] args) throws InterruptedException{
		System.out.println("当前时间为:"+new Date());
		Calendar c = Calendar.getInstance();
		Date runDate1 = c.getTime();
		System.out.println("计划时间为:"+runDate1);
		
		MyTask myTask = new MyTask();
		Timer timer = new Timer();
		timer.schedule(myTask, 7000); // 计划任务延迟7秒后执行
		Thread.sleep(10000);
		timer.cancel();
	}
}

更多相关文章教程推荐:java入门教程

--结束END--

本文标题: Java线程之Timer定时器

本文链接: https://www.lsjlt.com/news/2585.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java多线程之定时器Timer的实现
    目录标准库中的Timer模拟实现Timer标准库中的Timer 标准库中有一个Timer类,java.util.Timer,核心方法为schedule,schedule有两个参数,第...
    99+
    2022-11-13
    Java 多线程 定时器Timer Java 定时器Timer Java 定时器
  • 【Java|多线程与高并发】定时器(Timer)详解
    文章目录 1. 前言2. 定时器的基本使用3. 实现定时器4. 优化上述的定时器代码5. 总结 1. 前言 在Java中,定时器Timer类是用于执行定时任务的工具类。它允许你安排一个...
    99+
    2023-10-05
    java jvm 开发语言
  • python通过线程实现定时器timer
    下面介绍以threading模块来实现定时器的方法。  使用前先做一个简单试验:  import threading def sayhello():         print "hell...
    99+
    2023-01-31
    定时器 线程 python
  • Java多线程定时器Timer原理的示例分析
    这篇文章给大家分享的是有关Java多线程定时器Timer原理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Timer的schedule(TimeTask task, Date time)的使用该方法的作...
    99+
    2023-05-30
    java
  • Java多线程案例之定时器
    文章目录 一. 定时器概述1. 什么是定时器2. 标准库中的定时器 二. 定时器的简单实现 一. 定时器概述 1. 什么是定时器 定时器是一种实际开发中非常常用的组件, 类似于一个 “...
    99+
    2023-09-10
    java 定时器 Timer 多线程 线程安全
  • boost.asio框架系列之定时器Timer
    同步Timer asio中提供的timer名为deadline_timer,它提供了超时计时的功能。首先以一个最简单的同步Timer为例来演示如何使用它。 #include ...
    99+
    2024-04-02
  • java中Timer定时器怎么用
    小编给大家分享一下java中Timer定时器怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Timer定时器的使用和启动1.概述定时计划任务功能在Java中主...
    99+
    2023-06-22
  • Java中的定时器Timer详解
    目录总结简单来说,定时器就相当于一个“闹钟”,给定时器设定一个任务,约定这个任务在xxx时间之后执行~ Timer类提供了一个核心接口,schedule(安排) 指定一个任...
    99+
    2024-04-02
  • Java定时器Timer的源码分析
    目录一、TimerTask1. 任务状态2. 任务属性说明3. 任务方法说明二、Timer1. sched方法2. cancel方法3. purge方法三、TaskQueue四、Ti...
    99+
    2022-11-13
    Java Timer源码 Java Timer定时器 Java Timer
  • Java多线程案例之定时器详解
    目录一.什么是定时器二.标准库中的定时器(timer)2.1什么是定时器2.2定时器的使用三.实现定时器3.1什么是定时器3.2最终实现代码一.什么是定时器 定时器也是软件开发中的一...
    99+
    2022-11-13
    Java多线程 定时器 Java 定时器 Java 多线程
  • 如何在Java中使用Timer定时器
    如何在Java中使用Timer定时器?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、概念      定时计划任务功能在J...
    99+
    2023-05-30
    java timer
  • 在java项目中如何使用Timer定时器
    在java项目中如何使用Timer定时器?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。定时的功能我们在手机上见得比较多,比如定时清理垃圾,闹钟,等等.定时功能在...
    99+
    2023-05-31
    java 定时器 timer
  • boost.asio框架系列之定时器Timer怎么使用
    这篇文章主要介绍“boost.asio框架系列之定时器Timer怎么使用”,在日常操作中,相信很多人在boost.asio框架系列之定时器Timer怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”boo...
    99+
    2023-07-02
  • Android定时器Timer简单使用
    在Android中,可以使用`Timer`类来创建定时器,实现定时执行某个任务的功能。以下是一个简单的使用示例:1. 创建一个`Ti...
    99+
    2023-10-12
    Android
  • Java 中Timer和TimerTask 定时器和定时任务使用的例子
    这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求Timer类是用来执行任务的类,它接受一个TimerTask做参数Timer有两种执行任务的模式,最常用的是schedule,它可以以两种方式执行任务:1:在某个时间(Data),...
    99+
    2023-05-31
    timertask 定时器 tim
  • Android定时器Timer怎么使用
    Android定时器Timer可以使用以下步骤:1. 创建一个Timer对象Timer timer = new Timer();2....
    99+
    2023-05-30
    android定时器 android
  • java定时器timer的使用方法代码示例
     1.首先肯定是容器一启动就要启动定时器,所以我们可以选择把定时器写在一个监听器里,容器一启动所以监听器也就跟着启动,然后定时器就可以工作了。第一步,把自己写的监听器加到web.xml中;第二步,写一个监听器,实现ServletC...
    99+
    2023-05-30
    java timer 定时器
  • 一文带你搞懂Java定时器Timer的使用
    目录一、定时器是什么二、自定义定时器一、定时器是什么 定时器类似于我们生活中的闹钟,可以设定一个时间来提醒我们。 而定时器是指定一个时间去执行一个任务,让程序去代替人工准时操作。 标...
    99+
    2023-01-09
    Java定时器Timer使用 Java定时器Timer Java定时器 Java Timer
  • 深入了解Java定时器中的Timer的原理
    目录主要成员变量定时功能TimerThread结论Demo代码位置Java在1.3版本引入了Timer工具类,它是一个古老的定时器,搭配TimerTask和TaskQueue一起使用...
    99+
    2024-04-02
  • java中Timer定时器的使用和启动方式
    目录Timer定时器的使用和启动1.概述2.应用场景3.使用方法4.启动方法java的几种定时器小结1.@Scheduled注解2.quartz3.使用Timer4.使用线程控制Ti...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作