定时器的应用
1、 定时器主要涉及到两个类(java.util包中)
@-》public class Timer extends Object
(一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。 )
@-->public abstract class TimerTask extends Object implements Runnable
(由 Timer 安排为一次执行或重复执行的任务。)
2、Timer类的构造方法:
构造方法摘要
|
Timer()
创建一个新计时器。
|
|
Timer(booleanisDaemon)
创建一个新计时器,可以指定其相关的线程作为守护程序运行。
|
|
Timer(Stringname)
创建一个新计时器,其相关的线程具有指定的名称。
|
|
Timer(Stringname, booleanisDaemon)
创建一个新计时器,其相关的线程具有指定的名称,并且可以指定作为守护程序运行。
|
|
|
|
与每个 Timer 对象相对应的是单个后台线程,用于顺序地执行所有计时器任务。
计时器任务应该迅速完成。如果完成某个计时器任务的时间太长,那么它会“独占”计时器的任务执行线程。因此,这就可能延迟后续任务的执行,而这些任务就可能“堆在一起”,并且在上述不友好的任务最终完成时才能够被快速连续地执行。
对 Timer 对象最后的引用完成后,并且 所有未处理的任务都已执行完成后,计时器的任务执行线程会正常终止(并且成为垃圾回收的对象)。但是这可能要很长时间后才发生。
默认情况下,任务执行线程并不作为守护线程 来运行,所以它能够阻止应用程序终止。如果调用者想要快速终止计时器的任务执行线程,那么调用者应该调用计时器的
cancel 方法。
如果意外终止了计时器的任务执行线程,例如调用了它的 stop 方法,那么所有以后对该计时器安排任务的尝试都将导致
IllegalStateException,就好像调用了计时器的 cancel 方法一样。
此类是线程安全的:多个线程可以共享单个
Timer 对象而无需进行外部同步。
此类不 提供实时保证:它使用 Object.wait(long) 方法来安排任务。
实现注意事项:此类可扩展到大量同时安排的任务(存在数千个都没有问题)。在内部,它使用二进制堆来表示其任务队列,所以安排任务的开销是 O(log n),其中 n 是同时安排的任务数。
实现注意事项:所有构造方法都启动计时器线程。
方法摘要
|
void
|
cancel()
终止此计时器,丢弃所有当前已安排的任务。
|
int
|
purge()
从此计时器的任务队列中移除所有已取消的任务。
|
void
|
schedule(TimerTasktask,
Datetime)
安排在指定的时间执行指定的任务。
|
void
|
schedule(TimerTasktask,
DatefirstTime, longperiod)
安排指定的任务在指定的时间开始进行重复的固定延迟执行。
|
void
|
schedule(TimerTasktask, longdelay)
安排在指定延迟后执行指定的任务。
|
void
|
schedule(TimerTasktask, longdelay, longperiod)
安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。
|
void
|
scheduleAtFixedRate(TimerTasktask,
DatefirstTime, longperiod)
安排指定的任务在指定的时间开始进行重复的固定速率执行。
|
void
|
scheduleAtFixedRate(TimerTasktask, longdelay, longperiod)
安排指定的任务在指定的延迟后开始进行重复的固定速率执行。
|
3、TimerTask类的构造方法:
实例1:
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class TimerTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//每隔10s打印"hello,honey!";
new Timer().schedule(new TimerTask(){
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("hello,honey!");
}
}, 10000);
while(true){
System.out.println(new Date().getSeconds());//打印当前秒数
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
实例2:
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class TimerTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//每隔10s打印"hello,honey!";
new Timer().schedule(new TimerTask(){
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("hello,honey!");
}
}, 10000,3000);//10s后打印,以后每隔3s打印一次
/*while(true){
System.out.println(new Date().getSeconds());//打印当前秒数
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}*/
}
}
运行结果:

分享到:
相关推荐
资源名称:Java多线程与并发库高级应用视频教程22集资源目录:【】01传统线程技术回顾【】02传统定时器技术回顾【】03传统线程互斥技术【】04传统线程同步通信技术【】04传统线程同步通信技术_分割纪录【】05线程...
Java多线程与定时器是Java编程中两个重要的概念,它们在构建高性能、高并发的应用程序中发挥着关键作用。本文将深入探讨这两个主题,并结合实际的代码示例进行讲解。 首先,我们来理解Java多线程。多线程允许一个...
本主题将深入探讨如何在Java多线程环境下实现进度条功能。 首先,理解Java多线程的基本概念至关重要。Java通过Thread类和Runnable接口来支持多线程。创建一个新线程通常有两种方式:继承Thread类并重写run()方法,...
总结,这个"java多线程应用实现示例"通过小球运动的模拟,深入浅出地展示了Java多线程的运用,包括线程创建、同步、通信和线程池管理等关键概念。学习这个示例有助于理解和掌握Java多线程编程,为实际项目开发中的...
总之,这个"java多线程迷宫生成程序"是一个很好的学习资源,它将多线程、图形渲染和算法应用巧妙地结合在一起,为开发者提供了一个实战练习平台,有助于提升对并发编程和动态图形生成的理解。通过深入研究源代码,你...
Java编程语言在处理并发任务和时间调度方面提供了丰富的工具,其中`java定时器`、`多线程(池)`和`java队列`是核心概念。让我们深入探讨这些主题。 ### 1. Java定时器(java.util.Timer) `java.util.Timer` 类允许...
在 Java 中,多线程编程是一种强大的工具,它允许多个任务在同一个程序中并发执行,从而提高应用程序的效率和响应性。Java 为多线程编程提供了丰富的支持,包括两种主要的实现方式:继承 `Thread` 类和实现 `...
总之,"Java 游戏源码-----模拟钢琴"是一个综合性的项目,涵盖了Java图形用户界面设计、音频处理、事件监听和多线程等多个重要知识点。通过研究这个源码,不仅可以提升你的Java编程技能,还能加深对游戏开发流程的...
总之,“xintiao.rar_多线程 定时器”项目中涉及的技术包括利用多线程进行并发处理,实现心跳报文的发送与接收,以及通过定时器来定期触发心跳报文的发送。这些技术在构建可靠、高效的网络通信系统中起着至关重要的...
1. **Java多线程**:Java通过`Thread`类和`Runnable`接口提供了对多线程的支持。在这个项目中,可能有两个线程分别控制两个圆形——代表月亮和地球,这两个线程并行运行,以实现同时移动和交互的效果。使用`start()`...
在“java定时器+多线程(池)+java队列Demo”这个项目中,我们将深入探讨这三个核心概念。 1. **Java定时器(java.util.Timer)**:`Timer`类用于调度周期性的任务执行。它可以安排一个任务在未来某个时间点或定期...
【Java多线程赛马游戏】是一个通过Java编程语言实现的互动小游戏,它巧妙地结合了多线程技术和Swing图形用户界面库。这个项目旨在展示如何在Java中创建并发执行的任务,模拟赛马比赛的过程,并提供用户友好的图形...
创建,但尚未启动,即还没有调用 `start()` 方法。 2、可运行状态:线程调用了 `start()` 方法,等待 JVM 分配 CPU 时间...通过合理运用多线程技术,可以提升程序的并发性能,优化资源利用,使应用程序更加健壮和高效。
1.讲解了Java多线程的基础, 包括Thread类的核心API的使用。2.讲解了在多线程中对并发访问的控制, 主要就是synchronized的使用, 由于此关键字在使用上非常灵活, 所以书中用了很多案例来介绍此关键字的使用, 为...
Java编程中的线程动画是一种利用多线程技术在图形用户界面(GUI)上实现动态效果的方法。线程是操作系统分配CPU时间的基本单元,Java通过提供...同时,不断学习和实践将帮助你更好地理解和掌握Java多线程编程的精髓。
总的来说,Java并发编程实践中的任务执行是一个涉及线程调度、线程池管理、任务生命周期控制、结果处理等多个方面的复杂主题。理解和掌握这些概念和技术,能够帮助开发者编写出更加高效、可靠的并发程序。
下面将详细探讨Java多线程在弹球游戏中如何应用以及相关知识点。 首先,我们要理解Java中的线程。线程是程序执行的最小单位,一个进程可以有多个线程。在Java中,可以通过继承Thread类或实现Runnable接口来创建线程...
【Java多线程详解】 Java多线程是Java编程中...总之,Java多线程提供了强大的并发能力,通过理解并掌握线程的基本概念、创建、调度、控制以及同步,开发者可以编写出高效、安全的多线程程序,适应现代计算环境的需求。
在这个特定的项目“java多线程模拟时钟显示”中,开发者利用Java的多线程技术来创建一个模拟传统时钟的程序,时钟会实时地显示时针、分针和秒针的位置。下面我们将深入探讨如何实现这样的功能以及涉及的关键知识点。...
总的来说,这个"JAVA打飞机游戏设计与实现-多线程"项目不仅涵盖了Java的基础语法和面向对象编程,还深度探讨了Java的多线程编程技巧,是学习和实践Java并发处理的一个优秀实例。通过分析和理解源代码,开发者能够...