java中timer类的用法是什么

2021-01-10 07:59:20 字数 5123 阅读 9996

1楼:匿名用户

所有类型的 java 应用程序一般都需要计划

重复执行的任务。企业应用程序需要计划每日的日志或者晚间批处理过程。一个 j2se 或者 j2me 日历应用程序需要根据用户的约定计划闹铃时间。

不过,标准的调度类 timer 和 timertask 没有足够的灵活性,无法支持通常需要的计划任务类型。在本文中,java 开发人员 tom white 向您展示了如何构建一个简单通用的计划框架,以用于执行任意复杂的计划任务。

把 java.util.timer 和 java.

util.timertask 统称为 java 计时器框架,它们使程序员可以很容易地计划简单的任务(注意这些类也可用于 j2me 中)。在 java 2 sdk, standard edition, version 1.

3 中引入这个框架之前,开发人员必须编写自己的调度程序,这需要花费很大精力来处理线程和复杂的 object.wait() 方法。不过,java 计时器框架没有足够的能力来满足许多应用程序的计划要求。

甚至一项需要在每天同一时间重复执行的任务,也不能直接使用 timer 来计划,因为在夏令时开始和结束时会出现时间跳跃。

本文展示了一个通用的 timer 和 timertask 计划框架,从而允许更灵活的计划任务。这个框架非常简单 ?? 它包括两个类和一个接口 ??

并且容易掌握。如果您习惯于使用 java 定时器框架,那么您应该可以很快地掌握这个计划框架。

计划单次任务

计划框架建立在 java 定时器框架类的基础之上。因此,在解释如何使用计划框架以及如何实现它之前,我们将首先看看如何用这些类进行计划。

想像一个煮蛋计时器,在数分钟之后(这时蛋煮好了)它会发出声音提醒您。清单 1 中的**构成了一个简单的煮蛋计时器的基本结构,它用 java 语言编写:

清单 1. eggtimer 类

package ***.tiling.scheduling.examples;

import java.util.timer;

import java.util.timertask;

public class eggtimer

public void start()

private void playsound()

}, minutes * 60 * 1000);

} public static void main(string args)

}eggtimer 实例拥有一个 timer 实例,用于提供必要的计划。用 start() 方法启动煮蛋计时器后,它就计划了一个 timertask,在指定的分钟数之后执行。时间到了,timer 就在后台调用 timertask 的 start() 方法,这会使它发出声音。

在取消计时器后这个应用程序就会中止。

***中的三种timer的区别和用法

2楼:育知同创教育

在c#里关于定时器类就有3个

1.定义在system.windows.forms里

2.定义在system.threading.timer类里

***中的三种timer的区别和用法

3楼:深圳市关键词教育培训中心

***中的三种timer的区别和用法:

区别:

//1.实现按用户定义的时间间隔引发事件的计时器。此计时器最宜用于 windows 窗体应用程序中,并且必须在窗口中使用。

system.windows.forms.timer

// 2.提供以指定的时间间隔执行方法的机制。无法继承此类。

system.threading.timer

//3.在应用程序中生成定期事件。

system.timers.timer

这三个定时器位于不同的命名空间内,上面大概介绍了3个定时器的用途,其中第一个是只能在windows窗体中使用的控件。在.***1.

1里面,第3个system.timers.timer,也是可以拖拽使用,而.

***2.0开始取消了,只能手动编写**。而后2个没有限制制。

下面通过具体的列子来看3个timer的使用和区别。

一 system.windows.forms.timer

#region system.windows.forms.timer

public partial class form1 : form

int num = 0;

private void form_timer_tick(object sender, eventargs e)

private void button1_click(object sender, eventargs e)

private void button2_click(object sender, eventargs e)}

#endregion

上面这个是一个很简单的功能,在form窗体上拖了一个system.windows.forms.

timer控件名字为form_timer,在属性窗中把enable属性设置为ture,interval是定时器的间隔时间。双击这个控件就可以看到 form_timer_tick方法

timer 用于以用户定义的事件间隔触发事件。windows 计时器是为单线程环境设计的,其中,ui 线程用于执行处理。它要求用户**有一个可用的 ui 消息泵,而且总是在同一个线程中操作,或者将调用封送到另一个线程。

在timer内部定义的了一个tick事件,我们前面双击这个控件时实际是增加了一行**

this.form_timer.tick += new system.eventhandler(this.form_timer_tick);

二 system.timers.timer

#region system.windows.forms.timer

public partial class form1 : form

int num = 0;

datetime time1 = new datetime();

datetime time2 = new datetime();

//定义timer

system.timers.timer timers_timer = new system.timers.timer();

private void button1_click(object sender, eventargs e)

void timers_timer_elapsed(object sender, system.timers.elapsedeventargs e)

private void button2_click(object sender, eventargs e)}

#endregion

最大的不同就是上面的**在调试时会报错,提示你"线程间操作无效: 从不是创建控件“label1”的线程访问它。

static void main()

public static void test(object o)

最后看下msdn的描述: 只要在使用 timer,就必须保留对它的引用。对于任何托管对象,如果没有对 timer 的引用,计时器会被垃圾**。

即使 timer 仍处在活动状态,也会被**。当不再需要计时器时,请使用 dispose 方法释放计时器持有的资源。如果希望在计时器被释放时接收到信号,请使用接受 waithandle 的 dispose(waithandle) 方法重载。

计时器已被释放后,waithandle 便终止。

总结:

system.threading.timer 是一个简单的轻量计时器,它使用**方法并由线程池线程提供服务。

不建议将其用于 windows 窗体,因为其**不在用户界面线程上进行。system.windows.

forms.timer 是用于 windows 窗体的更佳选择。要获取基于服务器的计时器功能,可以考虑使用 system.

timers.timer,它可以引发事件并具有其他功能。

***中的三种timer的区别和用法

4楼:上海儒森教育进修学校

1.实现按用户定义的时间间隔引发事件的计时器。此计时器最宜用于 windows 窗体应用程序中,并且必须在窗口中使用。

system.windows.forms.timer// 2.提供以指定的时间间隔执行方法的机制。无法继承此类。

system.threading.timer//3.在应用程序中生成定期事件。

system.timers.timer

这三个定时器位于不同的命名空间内,上面大概介绍了3个定时器的用途,其中第一个是只能在windows窗体中使用的控件。在.***1.

1里面,第3个system.timers.timer,也是可以拖拽使用,而.

***2.0开始取消了,只能手动编写**。而后2个没有限制制。

下面通过具体的列子来看3个timer的使用和区别,网上谈的很多,但基本都没有**。

***中的三种timer的区别和用法

5楼:翻译达人

这3个定时器分别是:

1.实现按用户定义的时间间隔引发事件的计时器。此计时器最宜用于 windows 窗体应用程序中,并且必须在窗口中使用。

system.windows.forms.

timer

2.提供以指定的时间间隔执行方法的机制。无法继承此类。 system.threading.timer

3.在应用程序中生成定期事件。 system.timers.timer

区别:1、system.threading.

timer 是一个简单的轻量计时器,它使用**方法并由线程池线程提供服务。不建议将其用于 windows 窗体,因为其**不在用户界面线程上进行。

2、system.windows.forms.

timer 是用于 windows 窗体的更佳选择。要获取基于服务器的计时器功能,可以考虑使用 system.timers.

timer,它可以引发事件并具有其他功能。

3、在《clr via c#》中讲多线程时有提到这3个计时器,但作者说system.timers.timer是对system.threading.timer的报装,不推荐使用

java类中生成main方法的快捷键是什么

1楼 匿名用户 1 在class中先输入main 2 然后按alt 就会自动弹出main函数提示 3 选择main函数就行了。 2楼 匿名用户 默认是main然后alt 3楼 千锋教育 没有快捷键,如果你用的是eclipse那在创建类的时候倒是有如图 4楼 聶鑫 自己去设置一个吧。。 windows...

java中子类和子类型的区别,Java的类的继承中,子类与非子类是什么?有什么区别?

1楼 宝贝我想了 子类化 subclass 和 子类型化 subtype 的区别 原创,未经作者许可不得 subtype具有更加严格的要求,就是父类的任何子类都可以在运行时可无缝的代替父类的工作,子类的接口具有更加相比父类更加强的前置条件,父类的接口在子类中得到继承,并且不得在子类中修改父类方法的签...

java怎么在方法调用其他的方法的变量(在同类里

1楼 好程序员 java 变量的作用范围有四个级别 类级 对象实例级 方法级 块级。 类级变量又称全局级变量,在对象产生之前就已经存在,就是用 static 修饰的属性。 对象实例级,就是属性变量。 方法级 就是在方法内部定义的变量,就是局部变量。 块级 就是定义在一个块内部的变量,变量的生存周期就...