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 修饰的属性。 对象实例级,就是属性变量。 方法级 就是在方法内部定义的变量,就是局部变量。 块级 就是定义在一个块内部的变量,变量的生存周期就...