Ⅰ java.util.Timer,创建多个任务如何管理
你该把各个TimingTask的实例对象管理起来,而不是用匿名类对象吧
TimingTask tasks[]=new TimingTask[2];
tasks[0]=new TimingTask(){
run(){ 动作1 }
};
tasks[1]=new TimingTask(){
run(){ 动作2 }
};
tasks[0].cancel(); //取消动作一
当然也可以把数组[]改成List,便于动态添加和删除
Ⅱ java 定时器 一天有多个时间点执行同一个程序如何实现
import java.util.*;
class MyTime
{
int hour; int minute;
MyTime(int hour,int minute){
this.hour=hour;
this.minute=minute;
}
}
public class AboutTime
{
public static void main(String args[]){
final MyTime mt=new MyTime(11,24);
//这里,假设程序运行时,是在早上8点半之前的。其他情况,你自行分析
Calendar cal=Calendar.getInstance();
//此方法获得当前地域的时间,注意,getInstance是静态方法
cal.set(cal.HOUR, mt.hour);//设置你所要等待的时刻
cal.set(cal.MINUTE, mt.minute);
Calendar cal2=Calendar.getInstance();//
long time1=cal.get(cal.HOUR_OF_DAY)*3600+cal.get(cal.MINUTE)*60;//将两个时刻都转换成秒数,以便进行相减
long time2=cal2.get(cal2.HOUR_OF_DAY)*3600+cal2.get(cal2.MINUTE)*60+cal2.get(cal2.SECOND);
final long waitTime=time1-time2;//此时获得当前时刻与要等待时刻的时间差,单位是秒
//这里说明一下,现在所指的当前时刻是“Calendar cal2=Calendar.getInstance()”这句执行时所获得的时刻
//获得后,它的各值(秒,分,时)等信息都不会改变。当然,运行几行代码,花不了几毫秒。所以
//虽然之前的cal2的时间信息与运行三行代码以后的时间信息是差不多的
System.out.println(waitTime);//此行用于测试
new Thread(new Runnable(){
public void run(){
try{
for(long l=0;l<waitTime;l++){
Thread.sleep(1000);
System.out.println("###");//一秒打一个,当然,告诉你正在计时
//这里用多线程,因为运行后,可以继续运行主线程。不影响你干其他事儿。
}
}
catch(InterruptedException e){}
System.out.println(mt.hour+":"+mt.minute+"到了");
}
}).start();
//不过,你说一天要三次计算。这很容易,如何实现,由你自己决定。
}
}
Ⅲ java定时器用什么实现
java定时器的使用()
1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。
对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。
private java.util.Timer timer;
timer = new Timer(true);
timer.schele(
new java.util.TimerTask() { public void run()
{ //server.checkNewMail(); 要操作的方法} }, 0, 5*60*1000);
第一个参数是要操作的方法,第二个参数是要设定延迟的时间,第三个参
数是周期的设定,每隔多长时间执行该操作。
使用这几行代码之后,Timer本身会每隔5分钟调用一遍
server.checkNewMail()方法,不需要自己启动线程。Timer本身也是多线程同
步的,多个线程可以共用一个Timer,不需要外部的同步代码。
2、
(1)Timer.schele(TimerTask task,Date time)安排在制定的时间执行指定的
任务。
(2)Timer.schele(TimerTask task,Date firstTime ,long period)安排指定
的任务在指定的时间开始进行重复的固定延迟执行.
(3)Timer.schele(TimerTask task,long delay)安排在指定延迟后执行指定的
任务.
(4)Timer.schele(TimerTask task,long delay,long period)安排指定的任务
从指定的延迟后开始进行重复的固定延迟执行.
(5)Timer.scheleAtFixedRate(TimerTask task,Date firstTime,long period)
安排指定的任务在指定的时间开始进行重复的固定速率执行.
(6)Timer.scheleAtFixedRate(TimerTask task,long delay,long period)安
排指定的任务在指定的延迟后开始进行重复的固定速率执行.
用Java Timer API 进行时间调度开发的相关注意点
java.util这个包中可以找到Timer和TimerTask这两个类。Timer直接从Object
继承,它相当于一个计时器,能够用它来指定某个时间来执行一项任务,或者
每隔一定时间间隔反复执行同一个任务。创建一个Timer后,就会生成一个线程
在背后运行,来控制任务的执行。而TimerTask就是用来实现某项任务的类,
它实现了Runnable接口,因此相当于一个线程。
Ⅳ JAVA同时使用两个Timer如何不干扰。。。求高手解决。。。。。
使用Timer的scheleAtFixedRate() 方法就可以保证重复间隔时间的稳定
Ⅳ 怎样用Timer定时器执行多个定时任务
package comz.autoupdatefile;
import java.util.Timer;
import java.util.TimerTask;
public class M {
public static void main(String[] args) {
内// TODO todo.generated by zoer
Timer timer = new Timer();
timer.schele(new MyTask(), 1000, 2000);
timer.schele(new MyTask1(), 1000, 2000);
}
}
class MyTask extends TimerTask {
@容Override
public void run() {
System.out.println("dddd");
}
class MyTask1 extends TimerTask {
@Override
public void run() {
System.out.println("eeee");
}
}
Ⅵ java timer太多会影响性能吗
大量的运用timer时每一个timer又开起一个或是多个线程,每一个线程又要做自己的事情。必然要会影响性能。
Ⅶ 两个java timer定时器如何相互调用
java.util.Timer类,这个类复是java里的定时器类制.schele()方法重构多次,可以定时重复执行任务.具体使用可以查看手册
给你一个简单的例子..从1000ms开始,每隔1000ms执行一次run方法
package demo;
import java.util.Timer;
import java.util.TimerTask;
public class TimerTest {
public static void main(String[] args) {
Timer t = new Timer();
t.schele(new TimerTask() {
@Override
public void run() {
//这里写你需要执行的任务,需要什么参数可以传进来..
System.out.println("定时任务....");
}
},1000,1000);
}
}