`

转:定时器设计

阅读更多

1、传统的定时器实现

 

  1. package cn.itcast.thread;  
  2.   
  3. import java.util.Date;  
  4. import java.util.Timer;  
  5. import java.util.TimerTask;  
  6.   
  7. public class TraditionalTimer {  
  8.   
  9.     private static  int count = 0;  
  10.       
  11.     public static void main(String[] args) {  
  12.           
  13.         //延迟2秒执行run方法中的内容  
  14.         final Timer timer = new Timer();  
  15.         timer.schedule(new TimerTask() {  
  16.             public void run() {  
  17.                 System.out.println("haha");  
  18.             }  
  19.         }, 2000);  
  20.           
  21.         //延迟2秒执行run方法中的内容,以后每间隔一秒去执行run方法  
  22.         timer.schedule(  
  23.                 new TimerTask() {  
  24.                     public void run() {  
  25.                         System.out.println("hello java");  
  26.                     }  
  27.                 },   
  28.                 2000,  
  29.                 1000);  
  30.   
  31.         //延迟2秒执行run方法中的内容,以后根据count的值判断是间隔2秒还是4秒去执行run方法  
  32.         System.out.println(new Date().getSeconds());  
  33.         class MyTimerTask extends TimerTask {  
  34.             public void run() {  
  35.                 count ++;  
  36.                 System.out.println(new Date().getSeconds());  
  37.                 System.out.println("hello java!");  
  38.                 if (count % 2 == 1) {  
  39.                     timer.schedule(new MyTimerTask(), 4000);  
  40.                 } else {  
  41.                     timer.schedule(new MyTimerTask(), 2000);  
  42.                 }  
  43.                   
  44.             }  
  45.         }  
  46.         TimerTask tt = new MyTimerTask();  
  47.         timer.schedule(tt, 2000);  
  48.     }  
  49.   

2、利用jdk新特性来设计定时器

 

  1. package cn.itcast.thread;  
  2.   
  3. import java.util.Calendar;  
  4. import java.util.concurrent.Executors;  
  5. import java.util.concurrent.ScheduledExecutorService;  
  6. import java.util.concurrent.TimeUnit;  
  7.   
  8. public class ModernTimerTest {  
  9.   
  10.     public static void main(String[] args) {  
  11.   
  12.         final ScheduledExecutorService timer = Executors.newScheduledThreadPool(1);  
  13.         timer.schedule(  
  14.                 new Runnable() {  
  15.                     public void run() {  
  16.                         System.out.println(Calendar.getInstance().get(Calendar.SECOND));  
  17.                     }  
  18.                 },   
  19.         1,   
  20.         TimeUnit.SECONDS  
  21.         );  
  22.           
  23.         class MyTask implements Runnable {  
  24.             public void run() {  
  25.                 System.out.println(" ----> " + Calendar.getInstance().get(Calendar.SECOND));  
  26.                 timer.schedule(new MyTask(), 2, TimeUnit.SECONDS);  
  27.             }  
  28.         }  
  29.           
  30.         timer.schedule(  
  31.                 new MyTask(),  
  32.                 1,   
  33.                 TimeUnit.SECONDS  
  34.         );  
  35.           
  36.     }  
  37.   
  38. }  
分享到:
评论

相关推荐

    战舰: 定时器中断触发ADC,DMA传输实验.zip

    通过学习和实践这个实验,开发者能够掌握如何在STM32上高效地使用定时器、ADC和DMA,这对于嵌入式系统设计是非常有价值的。 总之,这个实验的核心是利用定时器中断触发ADC进行周期性的电压采样,然后通过DMA将采样...

    实验14:定时器1中断.zip

    当定时器1达到预设的计数值时,会产生一个中断请求,CPU暂停当前任务,转而执行中断服务程序,处理定时事件。 6. **main.c**: 这是实验的核心源代码文件,其中包含了初始化定时器1、设置中断、以及中断服务函数的...

    实验15:定时器1中断.zip

    2. **Keil C语言**:Keil C是为微控制器设计的C编译器,它扩展了标准C语言以适应嵌入式开发的特殊需求,如位操作、硬件中断等。Keil IDE提供了一个集成的开发环境,包括编辑器、编译器、链接器和调试器,方便开发者...

    实验名称:定时器实验.pdf

    【定时器实验】MCS-51系列单片机中包含两个16位的定时器/计数器T0和T1,它们支持四种工作模式。...实验设计考虑了实际应用中的延时问题,如防抖动处理,以及如何通过组合不同工作模式来满足不同的定时和计数需求。

    实验12:定时器1中断.zip

    实验12的主题是关于"定时器1中断",这在STM32微控制器的开发中是一个重要的知识...了解并实践这个实验,开发者将深入理解STM32的中断机制和定时器的使用,这是进行实时系统设计、控制逻辑实现和高效能应用开发的基础。

    MSP432学习笔记7:定时器A中断配套资源

    MSP432P402r是一款由德州仪器(TI)推出的高效能、低功耗的嵌入式微处理器,广泛应用于各种嵌入式系统设计中。 **定时器A概述** 定时器A是MSP432中的一种多功能定时器,它可以被配置为计数器模式或者定时器模式。在...

    verilog微波炉定时器设计

    Verilog 微波炉定时器设计是一种基于 Verilog hardware description language (HDL) 的微波炉定时器设计。该设计使用 Verilog 语言描述了微波炉定时器的数字电路,包括控制模块、数据装入模块和计时器模块。该设计的...

    51单片机开发板实验:定时器T1中断控制两个LED以不同周期闪烁程序源代码.rar

    当某个事件发生时,CPU暂停当前执行的任务,转而去执行中断服务子程序。定时器T1中断就是一种基于时间的中断,每当定时器溢出时,就会触发中断请求。 4. **C语言编程**:KEIL是常用的51单片机开发环境,支持C语言...

    cc2530 ADC转换 和 定时器1

    总的来说,熟练掌握CC2530的ADC转换和定时器1的使用,对于设计高效、可靠的嵌入式系统至关重要。在实际项目中,结合具体的传感器和应用需求,灵活配置和优化这些功能,可以实现各种复杂的控制系统。通过不断的实践和...

    STM32 ADC由定时器触发转换

    STM32是一款基于ARM Cortex-M内核的微控制器,广泛应用于嵌入式系统设计中。在STM32中,ADC(Analog-to-Digital Converter,模数转换器)是核心的硬件模块之一,用于将模拟信号转换为数字信号,使得微控制器能够处理...

    定时器(80C51单片机汇编语言编程)

    ### 定时器在80C51单片机中的应用及汇编语言编程 #### 一、引言 在微控制器技术中,定时器是一个非常重要的组成部分,它被广泛应用于各种时间相关的控制任务中。80C51单片机作为一款经典的微控制器,在电子工程、...

    参考资料-单片机定时器应用探讨.zip

    - 中断处理:合理设计中断服务程序,避免中断处理时间过长影响系统性能。 - 定时器同步:在多定时器系统中,需要注意不同定时器之间的同步,避免产生不必要的干扰。 通过深入学习和实践,我们可以充分利用单片机...

    逻辑与数字系统设计 定时器

    《逻辑与数字系统设计:构建定时器》 在IT领域,逻辑与数字系统设计是电子工程和计算机科学的基础,它涉及到数字电路、布尔代数和硬件描述语言等关键概念。本篇文章将深入探讨如何利用Protues软件进行一个定时器的...

    定时器 数字电路课程设计 报告

    该课程设计的目标是构建一个0到60分钟的定时器,该定时器在启动时由红指示灯指示,结束时由绿指示灯指示,并且可以在60分钟内以分钟为单位自由设定定时时间。设计包括秒脉冲发生器、计数电路、比较电路以及输出电路...

    60分钟定时器仿真Multism仿真资源+报告

    本资源包“60分钟定时器仿真Multism仿真资源+报告”提供了一个实用的60分钟定时器的Multism仿真模型,通过该模型,我们可以深入理解定时器的工作原理和设计方法。 Multism是一款强大的电路设计与仿真软件,它允许...

    stm32 定时器3 四通道pwm

    STM32是一款基于ARM Cortex-M内核的微控制器,广泛应用于嵌入式系统设计中。在STM32中,定时器是实现各种功能的核心组件,包括脉宽调制(PWM)输出。定时器3是STM32众多定时器资源中的一个,它具有四通道输出能力,...

    设计一个定时器,能够在指定时间到了后进行关机

    本篇将详细讲解如何设计这样一个定时器,并探讨可能遇到的问题及解决方案。 首先,我们要理解定时器的基本原理。定时器是一种能够按照预设时间间隔触发事件的机制。在软件开发中,我们可以使用各种编程语言提供的...

    30秒定时器课程设计报告.pdf

    由于文档内容不完整且存在OCR扫描错误,下面尝试根据现有信息提供一个30秒定时器设计的知识点概要。 首先,从OCR识别的零散信息中,我们可以观察到设计中使用了多个电子元件,比如电阻、电容、74HC74D触发器等。...

    多通道秒定时器设计.pdf

    多通道秒定时器设计涉及微控制器编程与电子电路设计的综合应用。从给出的文档片段中可以看出,设计主要基于AT89C51微控制器,涉及74HC系列逻辑门芯片、LED指示灯、晶振等电子元件,并使用Keil C编程环境和Proteus...

Global site tag (gtag.js) - Google Analytics