`
xiemingmei
  • 浏览: 212404 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Timer的实现机制

阅读更多
Timer使用线程机制来实现,每个Timer对象后有一个后台线程,这个后台线程来执行该Timer对象的所用TimeTask任务。

Timer代码中有后台线程实例:
    
/**
     * The timer task queue.  This data structure is shared with the timer
     * thread.  The timer produces tasks, via its various schedule calls,
     * and the timer thread consumes, executing timer tasks as appropriate,
     * and removing them from the queue when they're obsolete.
     */
    private TaskQueue queue = new TaskQueue();

    /**
     * The timer thread.
     */
    private TimerThread thread = new TimerThread(queue);


这就是一个生产者消费者模式,Timer生产TimerTask任务放到TaskQueue 中,然后TimerThread从这个TaskQueue中取任务来进行执行。


A facility for threads to schedule tasks for future execution in a
background thread.  Tasks may be scheduled for one-time execution, or for repeated execution at regular intervals.

Corresponding to each Timer object is a single background
thread that is used to execute all of the timer's tasks, sequentially. Timer tasks should complete quickly.



		Timer t = new Timer();	
		Calendar date1 = Calendar.getInstance();
		date1.add(Calendar.MILLISECOND, 1000);
		t.schedule(new TimerTask(){
			@Override
			public void run() {
				System.out.println("3");
				System.out.println("线程t1:" + Thread.currentThread().getId());
			}			
		}, date1.getTime());
		
		
		Timer t2 = new Timer();	
		Calendar date2 = Calendar.getInstance();
		date2.add(Calendar.MILLISECOND, 1000);
		t2.schedule(new TimerTask(){
			@Override
			public void run() {
				System.out.println("4");
				System.out.println("线程t2:" + Thread.currentThread().getId());
			}			
		}, date2.getTime());	
		
		System.out.println("主线程:" + Thread.currentThread().getId());
		System.out.println("1");	


输出:
主线程:1
1
3
4
线程t1:8
线程t2:9
分享到:
评论

相关推荐

    erlang的timer和实现机制

    Erlang的timer实现机制基于Erlang的进程模型。每个定时器实际上都是一个单独的进程,当设置定时器时,Erlang调度器会在后台创建一个进程来跟踪时间。这个进程会在预定的时间点唤醒,执行相应的操作,如发送消息或...

    Windows、Linux和TCP_IP中Timer的实现机制.pdf

    Windows、Linux 和 TCP/IP 中的 Timer 实现机制 Timer 是计算机系统中的一种重要组件,用于管理和控制系统中的各种事件和任务。在 Windows、Linux 和 TCP/IP 等操作系统中,Timer 都是通过内核对象来实现的。 Timer...

    系统Timer机制,从硬件到操作系统,还有Qemu对timer的模拟

    应用程序利用这些Timer实现各种功能,例如计时、延迟执行、超时检测等。 5. Timer in Qemu 在虚拟化环境中,QEMU模拟了硬件Timer,使得虚拟机能够在没有真实硬件的情况下运行。QEMU提供了对RTC、PIT、TSC等Timer的...

    不使用timer实现UI界面更新

    然而,有时我们可能需要避免使用Timer控件来实现这一功能,特别是在涉及到多线程操作时。本篇将详细探讨如何不依赖Timer,而是利用Invoke方法来实现在UI线程安全地更新界面。 首先,我们要理解为什么不能直接在非UI...

    linux内核动态timer的实现

    Linux 内核动态定时器的...动态定时器机制的实现还涉及到时间比较操作和 timer_list 结构体的操作。在 Linux 内核中,timer_list 结构体是动态定时器机制的核心数据结构,它提供了一个灵活的机制来管理内核中的定时器。

    java.util.timer实现的简单定时任务

    Java.util.Timer类是Java标准库提供的一种简单但功能有限的定时任务执行机制。它允许开发者在指定的时间间隔或特定时间点执行任务,非常适合处理一次性或周期性的后台操作。本篇文章将深入探讨如何使用Timer和...

    C#简单的实现计时器的代码 利用Timer实现

    2. **事件处理机制**:`System.Timers.Timer`通过`Elapsed`事件来通知用户时间已经过去。开发者需要注册该事件的处理程序来定义当计时器到期时应该执行的操作。 3. **线程调度**:在WPF应用程序中,由于UI更新必须在...

    Linux下Timer的一种实现

    Linux下Timer的一种实现,主要利用Linux下的信号机制实现,有兴趣的可以使用虚拟时间机制。

    使用Timer实现FLEX单击双击分离响应

    标题中的“使用Timer实现FLEX单击双击分离响应”是指在Adobe Flex应用程序开发中,如何通过使用Timer类来区分用户的单击事件和双击事件。在Flex中,用户界面的交互是通过事件驱动的方式进行的,单击和双击事件也不...

    C# 实现Scoket心跳机制的方法

    在C#中,可以使用System.Threading命名空间中的Timer类来实现心跳机制。下面是一个简单的心跳实现的示例代码: ```csharp using System; using System.Collections.Generic; using System.Threading; namespace ...

    timer_hw.rar_hw_timer

    在“timer_hw.rar_hw_timer”这个压缩包中,包含的文件“timer_hw.c”和“timer_query.c”很可能涉及到硬件定时器的驱动程序和查询接口的实现。 1. **硬件定时器基础**: - 硬件定时器有多种类型,如定时器0、...

    4 Timer0定时器中断_TIMER0_c8051f340_

    总结,C8051F340的TIMER0定时器中断是实现各种实时性、周期性任务的关键功能,其丰富的模式选择和灵活的中断机制使得它在嵌入式设计中具有广泛的应用。理解和熟练掌握TIMER0的使用,能极大地提升系统设计的效率和...

    我写的Linux版Timer定时器(源码),可在多线程间使用

    可能使用了POSIX定时器(如`timer_create`、`timer_settime`等系统调用)来实现底层的定时功能,并通过信号量或互斥锁等同步机制来确保在多线程环境中的安全性。开发者可能还实现了一些回调函数,当定时器触发时,...

    深入理解Java定时调度(Timer)机制

    "深入理解Java定时调度(Timer)机制" Java定时调度机制是Java中的一种重要机制,它允许开发者在特定时间执行特定的任务。Java中有多种定时调度机制,包括Timer、ScheduledExecutorService等。以下是关于Java定时调度...

    TimerTask与Timer设计时间监控

    在Java编程语言中,`TimerTask`和`Timer`是两个关键类,它们用于实现定时任务和调度。这两个类在处理需要定期执行的任务时非常有用,例如数据刷新、任务调度或者周期性的系统检查等。本篇文章将深入探讨`TimerTask`...

    flash基于Timer的动画

    在Flash编程中,基于Timer的动画是一种常见的动态效果实现方式,尤其在ActionScript 2.0和3.0中广泛使用。...这种基于时间的动画机制灵活多样,能够实现各种复杂的效果,是Flash编程中不可或缺的一部分。

    C#窗体的timer

    C#窗体的Timer控制 C#窗体中的Timer控件是一种非...C#窗体中的Timer控件提供了一种灵活的计时机制,可以根据需要来实现各种定时任务。但是,需要注意Timer控件的使用细节,以免对服务器的流量和资源造成不良的影响。

    Timer类的代码

    在C++中,没有内置的`Timer`类,但我们可以利用多线程、信号、回调函数等机制来创建一个类似的机制。 首先,让我们了解`Timer`类的基本结构和功能。`Timer`通常包含以下几个关键部分: 1. **构造函数**:初始化...

    java timer定时器详解(附详细代码)

    Java Timer定时器是Java语言中的一种常用的定时器机制,它可以帮助开发者实现一些需要在特定时间或特定间隔执行的任务。Java Timer定时器主要是通过java.util.Timer和java.util.TimerTask两个类来实现的。 Java....

Global site tag (gtag.js) - Google Analytics