Java计时器Timer 使用

Java 多线程6——计时器Timer的使用 + 详细代码模拟实现 + 代码优化 本篇文章带你了解多线程中的计时器,告诉你它的作用,教会你如何使用它,帮你手动代码实现计时器,并手把手带你优化代码,快进来吧! 阅读详情

所有类型的 Java 应用程序一般都需要计划重复执行的任务

Timer类是用来执行任务的类,它接受一个TimerTask做参数

java.util.Timer 和 java.util.TimerTask ,它们使程序员可以很容易地计划简单的任务

Timer

Timer最常用的是schedule执行任务的模式,,它可以以两种方式执行任务:

1:在某个时间(Data),2:在某个固定的时间之后(int delay).这两种方式都可以指定任务执行的频率.

看个简单的例子:

Java代码 复制代码
  1. import java.io.IOException;   
  2.   
  3.     import java.util.Timer;   
  4.   
  5.     public class TimerTest {   
  6.   
  7.     public static void main(String[] args){   
  8.   
  9.     Timer timer = new Timer();   
  10.   
  11.     timer.schedule(new Job(), 5000, 10000);//在5秒后执行此任务,每次间隔60秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务.   
  12.   
  13.     /*  
  14.  
  15.     //这个是用来停止此任务的,否则就一直循环执行此任务了  
  16.  
  17.     while(1==1){  
  18.  
  19.     try {  
  20.  
  21.     if(2==2){  
  22.  
  23.     timer.cancel();//使用这个方法退出任务  
  24.  
  25.     }  
  26.  
  27.     } catch (IOException e)  
  28.  
  29.     e.printStackTrace();  
  30.  
  31.     } */  
  32.   
  33.     }   
  34.   
  35.     static class Job extends java.util.TimerTask{   
  36.   
  37.     @Override  
  38.   
  39.     public void run() {   
  40.   
  41.     // TODO Auto-generated method stub   
  42.   
  43.     System.out.println("so...easy!");   
  44.   
  45.     }   
  46.   
  47.     }   
  48.   
  49.     }   
  50.   
  51.     import java.io.IOException;   
  52.   
  53.     import java.util.Timer;   
  54.   
  55.     public class TimerTest {   
  56.   
  57.     public static void main(String[] args){   
  58.   
  59.     Timer timer = new Timer();   
  60. timer.schedule(new Job(), 5000, 10000);//在5秒后执行此任务,每次间隔60秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务.   
  61.   
  62.     /*  
  63.  
  64.     //这个是用来停止此任务的,否则就一直循环执行此任务了  
  65.  
  66.     while(1==1){  
  67.  
  68.     try {  
  69.  
  70.     if(2==2){  
  71.  
  72.     timer.cancel();//使用这个方法退出任务  
  73.  
  74.     }  
  75.  
  76.     } catch (IOException e)  
  77.  
  78.     e.printStackTrace();  
  79.  
  80.     } */  
  81.   
  82.     }   
  83.   
  84.     static class Job extends java.util.TimerTask{   
  85.   
  86.     @Override  
  87.   
  88.     public void run() {   
  89.   
  90.     // TODO Auto-generated method stub   
  91.   
  92.     System.out.println("so...easy!");   
  93.   
  94.     }   
  95.   
  96.     }   
  97.   
  98.     }  
import java.io.IOException;

    import java.util.Timer;

    public class TimerTest {

    public static void main(String[] args){

    Timer timer = new Timer();

    timer.schedule(new Job(), 5000, 10000);//在5秒后执行此任务,每次间隔60秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务.

    /*

    //这个是用来停止此任务的,否则就一直循环执行此任务了

    while(1==1){

    try {

    if(2==2){

    timer.cancel();//使用这个方法退出任务

    }

    } catch (IOException e)

    e.printStackTrace();

    } */

    }

    static class Job extends java.util.TimerTask{

    @Override

    public void run() {

    // TODO Auto-generated method stub

    System.out.println("so...easy!");

    }

    }

    }

    import java.io.IOException;

    import java.util.Timer;

    public class TimerTest {

    public static void main(String[] args){

    Timer timer = new Timer();
timer.schedule(new Job(), 5000, 10000);//在5秒后执行此任务,每次间隔60秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务.

    /*

    //这个是用来停止此任务的,否则就一直循环执行此任务了

    while(1==1){

    try {

    if(2==2){

    timer.cancel();//使用这个方法退出任务

    }

    } catch (IOException e)

    e.printStackTrace();

    } */

    }

    static class Job extends java.util.TimerTask{

    @Override

    public void run() {

    // TODO Auto-generated method stub

    System.out.println("so...easy!");

    }

    }

    }

 

TimerTask 刚才在代码里提到了 TimerTask 类。TimerTask类里有一个抽象方法run(),我们把任务写到run()方法里,或由run()执行其他方法.

    完整的代码:

Java代码 复制代码
  1. public class TimerTest{   
  2.   
  3.     public static void main(String[] args){   
  4.   
  5.     int delay=5000;//延迟5秒   
  6.   
  7.     Timer timer=new Timer();//生成一个Timer对象   
  8.   
  9.     NewTask myTask=new NewTask();//初始化我们的任务   
  10.   
  11.     timer.schedule(yourTask,delay);//还有其他重载方法...   
  12.   
  13.     }   
  14.   
  15.     }   
  16.   
  17.     class NewTask extends TimerTask{//继承TimerTask类   
  18.   
  19.     public void run(){   
  20.   
  21.     System.out.println("printing!");   
  22.   
  23.     }   
  24.   
  25.     }   
  26.   
  27.     public class TimerTest{   
  28.   
  29.     public static void main(String[] args){   
  30.   
  31.     int delay=5000;//延迟5秒   
  32.   
  33.     Timer timer=new Timer();//生成一个Timer对象   
  34.   
  35.     NewTask myTask=new NewTask();//初始化我们的任务   
  36.   
  37.     timer.schedule(yourTask,delay);//还有其他重载方法...   
  38.   
  39.     }   
  40.   
  41.     }   
  42.   
  43.     class NewTask extends TimerTask{//继承TimerTask类   
  44.   
  45.     public void run(){   
  46.   
  47.     System.out.println("printing!");   
  48.   
  49.     }   
  50.   
  51.     }  
public class TimerTest{

    public static void main(String[] args){

    int delay=5000;//延迟5秒

    Timer timer=new Timer();//生成一个Timer对象

    NewTask myTask=new NewTask();//初始化我们的任务

    timer.schedule(yourTask,delay);//还有其他重载方法...

    }

    }

    class NewTask extends TimerTask{//继承TimerTask类

    public void run(){

    System.out.println("printing!");

    }

    }

    public class TimerTest{

    public static void main(String[] args){

    int delay=5000;//延迟5秒

    Timer timer=new Timer();//生成一个Timer对象

    NewTask myTask=new NewTask();//初始化我们的任务

    timer.schedule(yourTask,delay);//还有其他重载方法...

    }

    }

    class NewTask extends TimerTask{//继承TimerTask类

    public void run(){

    System.out.println("printing!");

    }

    }

 

这样这个程序就会在五秒钟后输出 printing!

    Timer的功能是相当强大的,若要详细了解,可以查看帮助文档.完整案例!

    现在大家看一下我写的关于实现LED滚屏显示动态信息!

    web 监听:

Java代码 复制代码
  1. package com.ving.xzfw.led;   
  2.   
  3.     import java.util.Timer;//定时器类   
  4.   
  5.     import javax.servlet.ServletContextEvent;   
  6.   
  7.     import javax.servlet.ServletContextListener;   
  8.   
  9.     import javax.servlet.ServletContext;   
  10.   
  11.     import org.apache.log4j.Logger;   
  12.   
  13.     import com.ving.xzfw.util.GetInformation;   
  14.   
  15.     //import com.ving.xzfw.lwsp.GetConfigInfor;   
  16.   
  17.     public class LEDListener implements ServletContextListener {   
  18.   
  19.     private Timer timer = null;   
  20.   
  21.     private Logger log = Logger.getLogger(getClass());   
  22.   
  23.     //  GetconfigInfor config = new GetconfigInfor();   
  24.   
  25.     GetInformation getInfo = new GetInformation("bpelConfig.properties");   
  26.   
  27.     Integer runTime = Integer.parseInt(getInfo.getProperty("led.TimingRunTime"));   
  28.   
  29.     String fileRealPath = "";   
  30.   
  31.     String templePath = "";   
  32.   
  33.     public void contextInitialized(ServletContextEvent event) {   
  34.   
  35.     // 在这里初始化监听器,在tomcat启动的时候监听器启动,可以在这里实现定时器功能   
  36.   
  37.     ServletContext context = event.getServletContext();   
  38.   
  39.     fileRealPath = context.getRealPath("")   
  40.   
  41.     + System.getProperty("file.separator") + "LEDFile"  
  42.   
  43.     + System.getProperty("file.separator");   
  44.   
  45.     templePath = context.getRealPath("")   
  46.   
  47.     + System.getProperty("file.separator") + "led"  
  48.   
  49.     + System.getProperty("file.separator");   
  50.   
  51.     timer = new Timer();   
  52.   
  53.     log.info("定时器已启动");// 添加日志,可在tomcat日志中查看到   
  54.   
  55.     timer.schedule(new LEDTimerTack(fileRealPath, templePath), 20000, runTime);   
  56.   
  57.     log.info("已经添加任务");   
  58.   
  59.     }   
  60.   
  61.     public void contextDestroyed(ServletContextEvent event) {// 在这里关闭监听器,所以在这里销毁定时器。   
  62.   
  63.     timer.cancel();   
  64.   
  65.     log.info("定时器销毁");   
  66.   
  67.     }   
  68.   
  69.     }   
  70.   
  71.     package com.ving.xzfw.led;   
  72.   
  73.     import java.util.Timer;//定时器类   
  74.   
  75.     import javax.servlet.ServletContextEvent;   
  76.   
  77.     import javax.servlet.ServletContextListener;   
  78.   
  79.     import javax.servlet.ServletContext;   
  80.   
  81.     import org.apache.log4j.Logger;   
  82.   
  83.     import com.ving.xzfw.util.GetInformation;   
  84.   
  85.     //import com.ving.xzfw.lwsp.GetConfigInfor;   
  86.   
  87.     public class LEDListener implements ServletContextListener {   
  88.   
  89.     private Timer timer = null;   
  90.   
  91.     private Logger log = Logger.getLogger(getClass());   
  92.   
  93.     //GetconfigInfor config = new GetconfigInfor();   
  94.   
  95.     GetInformation getInfo = new GetInformation("bpelConfig.properties");   
  96.   
  97.     Integer runTime = Integer.parseInt(getInfo.getProperty("led.TimingRunTime"));   
  98.   
  99.     String fileRealPath = "";   
  100.   
  101.     String templePath = "";   
  102. public void contextInitialized(ServletContextEvent event) {   
  103.   
  104.     // 在这里初始化监听器,在tomcat启动的时候监听器启动,可以在这里实现定时器功能   
  105.   
  106.     ServletContext context = event.getServletContext();   
  107.   
  108.     fileRealPath = context.getRealPath("")   
  109.   
  110.     + System.getProperty("file.separator") + "LEDFile"  
  111.   
  112.     + System.getProperty("file.separator");   
  113.   
  114.     templePath = context.getRealPath("")   
  115.   
  116.     + System.getProperty("file.separator") + "led"  
  117.   
  118.     + System.getProperty("file.separator");   
  119.   
  120.     timer = new Timer();   
  121.   
  122.     log.info("定时器已启动");// 添加日志,可在tomcat日志中查看到   
  123.   
  124.     timer.schedule(new LEDTimerTack(fileRealPath, templePath), 20000, runTime);   
  125.   
  126.     log.info("已经添加任务");   
  127.   
  128.     }   
  129.   
  130.     public void contextDestroyed(ServletContextEvent event) {// 在这里关闭监听器,所以在这里销毁定时器。   
  131.   
  132.     timer.cancel();   
  133.   
  134.     log.info("定时器销毁");   
  135.   
  136.     }   
  137.   
  138.     }  
package com.ving.xzfw.led;

    import java.util.Timer;//定时器类

    import javax.servlet.ServletContextEvent;

    import javax.servlet.ServletContextListener;

    import javax.servlet.ServletContext;

    import org.apache.log4j.Logger;

    import com.ving.xzfw.util.GetInformation;

    //import com.ving.xzfw.lwsp.GetConfigInfor;

    public class LEDListener implements ServletContextListener {

    private Timer timer = null;

    private Logger log = Logger.getLogger(getClass());

    //  GetconfigInfor config = new GetconfigInfor();

    GetInformation getInfo = new GetInformation("bpelConfig.properties");

    Integer runTime = Integer.parseInt(getInfo.getProperty("led.TimingRunTime"));

    String fileRealPath = "";

    String templePath = "";

    public void contextInitialized(ServletContextEvent event) {

    // 在这里初始化监听器,在tomcat启动的时候监听器启动,可以在这里实现定时器功能

    ServletContext context = event.getServletContext();

    fileRealPath = context.getRealPath("")

    + System.getProperty("file.separator") + "LEDFile"

    + System.getProperty("file.separator");

    templePath = context.getRealPath("")

    + System.getProperty("file.separator") + "led"

    + System.getProperty("file.separator");

    timer = new Timer();

    log.info("定时器已启动");// 添加日志,可在tomcat日志中查看到

    timer.schedule(new LEDTimerTack(fileRealPath, templePath), 20000, runTime);

    log.info("已经添加任务");

    }

    public void contextDestroyed(ServletContextEvent event) {// 在这里关闭监听器,所以在这里销毁定时器。

    timer.cancel();

    log.info("定时器销毁");

    }

    }

    package com.ving.xzfw.led;

    import java.util.Timer;//定时器类

    import javax.servlet.ServletContextEvent;

    import javax.servlet.ServletContextListener;

    import javax.servlet.ServletContext;

    import org.apache.log4j.Logger;

    import com.ving.xzfw.util.GetInformation;

    //import com.ving.xzfw.lwsp.GetConfigInfor;

    public class LEDListener implements ServletContextListener {

    private Timer timer = null;

    private Logger log = Logger.getLogger(getClass());

    //GetconfigInfor config = new GetconfigInfor();

    GetInformation getInfo = new GetInformation("bpelConfig.properties");

    Integer runTime = Integer.parseInt(getInfo.getProperty("led.TimingRunTime"));

    String fileRealPath = "";

    String templePath = "";
public void contextInitialized(ServletContextEvent event) {

    // 在这里初始化监听器,在tomcat启动的时候监听器启动,可以在这里实现定时器功能

    ServletContext context = event.getServletContext();

    fileRealPath = context.getRealPath("")

    + System.getProperty("file.separator") + "LEDFile"

    + System.getProperty("file.separator");

    templePath = context.getRealPath("")

    + System.getProperty("file.separator") + "led"

    + System.getProperty("file.separator");

    timer = new Timer();

    log.info("定时器已启动");// 添加日志,可在tomcat日志中查看到

    timer.schedule(new LEDTimerTack(fileRealPath, templePath), 20000, runTime);

    log.info("已经添加任务");

    }

    public void contextDestroyed(ServletContextEvent event) {// 在这里关闭监听器,所以在这里销毁定时器。

    timer.cancel();

    log.info("定时器销毁");

    }

    }

 

Java代码 复制代码
  1. package com.ving.xzfw.led;   
  2.   
  3.     import java.util.TimerTask;   
  4.   
  5.     public class LEDTimerTack extends TimerTask {   
  6.   
  7.     String fileRealPath = "";   
  8.   
  9.     String templePath = "";   
  10.   
  11.     String type="";   
  12.   
  13.     int floor;   
  14.   
  15.     public LEDTimerTack(String fileRealPath,String templePath,String type,Integer floor) {   
  16.   
  17.     this.fileRealPath=fileRealPath;   
  18.   
  19.     this.templePath=templePath;   
  20.   
  21.     this.type =type;   
  22.   
  23.     this.floor=floor;   
  24.   
  25.     }   
  26.   
  27.     public LEDTimerTack(String fileRealPath,String templePath) {   
  28.   
  29.     this.fileRealPath=fileRealPath;   
  30.   
  31.     this.templePath=templePath;   
  32.   
  33.     }   
  34.   
  35.     public void run( ) {   
  36.   
  37.     for(int i=1;i<=3;i++)   
  38.   
  39.     //呵呵,这里就是led动态生成信息的代码!   
  40.   
  41.     XlsUtil.createHtmlFile(templePath, fileRealPath,i);   
  42.   
  43.     }   
  44.   
  45.     }  
AI办公Agent技术:文档与表格智能处理实践 办公自动化技术正从规则驱动转向语义理解,大语言模型(LLM)为办公Agent赋予了智能决策能力。这类系统通过五层架构整合自然语言处理、工具API调用和任务规划引擎,能自动完成文档分类、表格分析等高重复性工作。关键技术包括基于TF-IDF和BERT的特征提取、Excel公式自动生成等,在财务报告、法律审查等场景可实现90%以上的效率提升。随着多模态能力和领域专业化发展,办公Agent正在重塑企业文档处理流程,成为数字化转型的核心基础设施。 阅读详情

相关推荐

基于STM32的双串口同时工作的详细指南(含完整代码示例)

STM32是STMicroelectronics(意法半导体)公司推出的一系列基于ARM Cortex-M内核的微控制器,广泛应用于嵌入式系统中。STM32系列微控制器具有高性能、低功耗和丰富的外设接口,适用于各种应用场景。USART(Universal Synchronous/Asynchronous Receiver/Transmitter)和UART(Universal Asynchronous Receiver/Transmitter)是串口通信的两种方式。

m0_57781768的博客 3805

java定时器Timer的使用

1、构造方法 ①Timer timer = new Timer(); ②定时器为守护进程 boolean flag=true; Timer timer1 =new Timer(flag); ③指定定时器的名字,方便指定停止  String name="TimerName2"; Timer timer2 =new Timer(name); ④指定定时器的名字,并指定为守护进程

"零点起航"的专栏 4436

保姆级教程:用AdGuard DNS代理实现全设备广告过滤(含Win/Mac/安卓/iOS配置)

本文提供了一份详尽的AdGuard DNS代理配置指南,帮助用户在全设备(Win/Mac/安卓/iOS)上实现广告过滤。通过系统级DNS设置,AdGuard能有效拦截广告、跟踪器和恶意网站,提升隐私保护和浏览效率。教程涵盖原理说明、各平台配置步骤及高级优化技巧,适合不同技术水平的用户。

weixin_42656416的博客 816

timer.schedule方法中参数详解

timer.schedule方法中参数详解

qq_27494201的博客 347

网络摄像机Sensor低光性能实测:海思平台搭配索尼IMX335 vs 豪威OV4689

本文通过海思Hi3516DV300平台,对索尼IMX335与豪威OV4689两款网络摄像机Sensor进行低光性能实测。在信噪比、动态范围及实景成像对比中,IMX335凭借更优的噪声控制与稳定性表现领先,尤其在极低光环境下优势明显。文章为安防监控项目的Sensor选型与海思平台优化提供了数据参考与实战建议。

silver的专栏 829

5分钟搞定PaddleOCR PP-OCRv5环境搭建:从安装到第一个识别Demo

本文提供了一份详细的PaddleOCR PP-OCRv5环境搭建与快速入门指南。通过清晰的步骤,指导读者在5分钟内完成从创建Python虚拟环境、安装PaddlePaddle框架和PaddleOCR库,到编写并运行第一个OCR识别Demo的全过程,帮助开发者快速体验最新的PP-OCRv5模型的文字识别能力。

sprite的博客 1266

Java Timer(定时器)

schedule(TimerTask task , Date time) // 安排在 "指定的时间" 执行 指定的任务。

doublepg13的博客 8409

ASP.NET MVC5 C# Entity Framework 连接 Oracle 数据库

ASP.NET MVC5 C# Entity Framework 连接 Oracle 数据库创建数据库安装 Entity Framework配置数据库连接字符串添加实体模型类添加数据库上下文类添加控制器类运行测试 创建数据库 创建【全局数据库名】为 demodb 的Oracle数据库,用 SYSTEM 用户连接成功后创建【用户名】为 DJIANG 的用户,并授予该用户 DBA 角色 安装 Enti...

idjiang的博客 2535

java计时器

上面的代码使用了一个 sleep ()方法来进行定时器的暂停,当我们不想执行 sleep ()方法时,就可以直接使用计时器,这样一来,如果使用计时器的话,就会暂停计时,从而避免了中断任务。在使用 JVM时,我们经常需要设置一个计时器,但是,在实际应用中,我们会遇到一些特殊的场景。上面的代码是通过循环来进行的,这里我们将 current类中的 decrease方法拿出来,然后利用这个方法来获取 current类中的一个方法: 当获取到 current类中的一个方法后,我们可以将其注册到 runtime里面。

花生日记 2584

冒险岛脚本函数大全:cm.sendYesNo和cm.warp的20个实战用法

本文深入解析了冒险岛脚本中cm.sendYesNo和cm.warp两个核心函数的20个实战应用场景。从基础的确认对话框交互、条件判断,到复杂的装备强化系统、动态传送与副本入口逻辑,文章通过大量代码示例展示了如何组合运用这两个函数,实现从简单NPC到复杂任务系统的进阶脚本开发,并分享了状态管理、错误处理与性能优化等最佳实践。

t4y5u6i7o的博客 1051

嵌入式开发避坑指南:手把手教你用STM32CubeMX配置W9825G6KH SDRAM(含时序参数详解)

本文详细介绍了如何使用STM32CubeMX配置W9825G6KH SDRAM,包括硬件连接检查、CubeMX初始化步骤、时序参数优化及稳定性问题排查。通过实测波形分析和案例分享,帮助开发者避免常见配置错误,提升嵌入式系统性能与稳定性。

weixin_42542669的博客 191

Java Swing Timer:计时器组件

1 Java Swing Timer:计时器组件 计时器(Timer)组件可以在指定时间间隔触发一个或多个 ActionEvent。设置计时器的过程包括创建一个 Timer 对象,在该对象上注册一个或多个动作侦听器,以及使用 start() 方法启动该计时器。 例如,以下代码创建并启动一个每秒(该时间由 Timer 构造方法的第一个参数指定)触发一次动作事件的计时器。Timer 构造方法的第二个...

书香水墨 5120

颠覆性创新的测量框架与跨领域实证分析

颠覆性创新作为科技发展的重要驱动力,其核心在于实现知识体系的范式转换。从技术原理看,这类创新通常具备知识替代、网络重构和跨领域渗透三大特征,通过引用网络分析和文本挖掘等方法可量化评估其影响力。在工程实践中,CD指数、DI指数等测量工具帮助研究者识别具有突破潜力的成果,而深度学习等新兴技术进一步提升了评估精度。当前AI、半导体等领域的热门技术发展表明,模块化架构和产业协同能有效促进颠覆性创新。面对全球范围内创新颠覆性下降的趋势,优化科研评价体系、构建跨学科协作网络成为关键应对策略。

weixin_29735807的博客 321

Java Swing的计时器组件Timer

概述 Timer组件是计时器,可以在指定时间间隔触发一个或多个ActionEvent。 可以达成的效果如例: 快速入门 第一步,创建Timer。 第二步,向Timer构造器中传入两个参数,分别是延迟和事件。 第三步,调用start()方法启用计时器。 public static void main(String[] args) { JFrame frame = new JFrame(); frame.setTitle("Timer测试");

二木成林 3273

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java的计时器函数_Java计时器Timer和TimerTask用法总结(源码)

在家学技术实在是不好坚持,心里老是想给自己放个假,但是现在俺又太菜,又想赶赶技术。前天做一个五子棋程序,遇到了计时器功能的需求,但是这个我没用过,就总结一下吧,不过虽然是会用了,但是和swing的代码整合还是有问题,困扰好久,到现在也没解决,一气之下,看了三部电影,呵呵。这个计时器,就是为了使在下五子棋过程中,黑白双方,轮流下的时候,给下棋一方计时,并且要求,时间动态显示在面板上,就是一秒一秒在走...

weixin_32058239的博客 397

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Java计时器Timer 使用1 (转)

a651944226的专栏 1210

java 计时器线程 Timer类

java提供了一个很方便的timer类,该类在javax.swing包中。当某些操作需要周期性执行 就可以使用计时器。 我们可以使用Timer类的构造方法Timer(int a,Object b)创建一个计时器,其中参数a的单位是毫秒,确定计时器每隔a 毫秒振铃一次,参数b是计时器的 package Example12_12; import javax.swing.*; import ja

苏苏爱自由 9659

android java 计时器Timer

Timer的执行是基于TimerTask的,而TimerTask在执行时会占用一个线程,如果我们同时执行大量的任务,可能会导致线程池被用尽,从而影响系统的性能和稳定性。Timer再执行任务时是在新线程中进行的,因此多个定时器任务可能会并发的执行,这可能会导致线程安全问题,为了避免这种情况的发生,我们可以使用HandlerThread或者单独的线程来执行定时器任务。Timer是Android中的一个非常有用的计时器类,他可以用于定期执行任务,在使用Timer时,需要注意线程安全问题,异常处理和性能问题。

awildpig110的博客 564

java timer计时_多种计时器的比较与分析

多种计时器的比较与分析王 越2008 年 5 月 26 日发布介绍计时器可以提供运行基于时间的工作任务的功能,在计时器的管理下,特定的任务可在某一时间运行一次,也可以按指定的时间间隔反复运行。在众多厂商提供的计时器中应用得比较多的有以下三种:java.util.TimerSun JDK 提供的一种轻量级的计时器。Commonj TimerIBM 和 BEA 联合制定和推出的一种适用于 J2EE 环...

weixin_39637049的博客 193

【Java多线程】计时器Timer/ScheduledExecutorService的使用

Timer 是 Java 提供的一个简单的任务调度工具(位于 java.util 包),用于在指定的时间执行任务(一次性或周期性执行)。:所有任务都在同一个线程中执行,如果一个任务执行时间过长,会影响其他任务的调度。:如果某个任务抛出未捕获的异常,整个 Timer 会终止,后续任务不会执行。如果任务执行时间超过 period,下一次任务会 立即开始(可能并发执行)。:如果系统时间被调整(如手动修改时间),可能导致任务执行不准确。:只需要在某个时间点执行一次的任务(如延迟初始化、超时任务)。

to_mountain的博客 1097

java timer 计时器_Java的Timer定时器

Timer主要用于Java线程里指定时间或周期运行任务,它是线程安全的,但不提供实时性(real-time)保证。上面提到了守护线程的概念。Java分为两种线程:用户线程和守护线程。所谓守护线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因 此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有...

weixin_29867607的博客 308

JAVA Timer()实现可重置计时器

要去实现一个计时器功能:倒记时10秒,倒计时结束后,触发事件A,倒计时过程中,若触发事件B,则重置计时器,重新倒计时十秒。

weixin_42152152的博客 2391

java 计时器标记位_Java计时器Timer和TimerTask用法总结(源码)

在家学技术实在是不好坚持,心里老是想给自己放个假,但是现在俺又太菜,又想赶赶技术。前天做一个五子棋程序,遇到了计时器功能的需求,但是这个我没用过,就总结一下吧,不过虽然是会用了,但是和swing的代码整合还是有问题,困扰好久,到现在也没解决,一气之下,看了三部电影,呵呵。这个计时器,就是为了使在下五子棋过程中,黑白双方,轮流下的时候,给下棋一方计时,并且要求,时间动态显示在面板上,就是一秒一秒在走...

weixin_34405261的博客 259

Java计时器Timer 使用 完整案例(转)

a651944226的专栏 1815

Java计时器Timer的使用

Java计时器Timer的使用

hfdgjhv的博客 6252

java计时器_Java Swing Timer:计时器组件

计时器(Timer)组件可以在指定时间间隔触发一个或多个 ActionEvent。设置计时器的过程包括创建一个 Timer 对象,在该对象上注册一个或多个动作侦听器,以及使用 start() 方法启动该计时器。例如,以下代码创建并启动一个每秒(该时间由 Timer 构造方法的第一个参数指定)触发一次动作事件的计时器。Timer 构造方法的第二个参数指定接收计时器动作事件的监听器。int delay...

weixin_39617669的博客 410
上一篇: URI、URL、URN
下一篇: Java计时器Timer 使用
MyJavaBlog
博客等级 码龄16年 11粉丝 126原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值