如何做到在Java定时器阵列

我知道我可能的方式在这里下车,但我想创建一个定时器阵列,这样mytimer [0] mytimer [1],mytimer [2],等等......所有消防关在不同的时间间隔,diffrerent事件发到服务器。 有任何想法吗? 6 for循环值仅用于测试目的的有机数。 这个数字后来被从程序的XML文件中的设置决定的基础。

Timer mytimers[] = new Timer[6]; for(int i = 0;i < 6;i++){ final int mytime = i; mytimers[i].scheduleAtFixedRate(new TimerTask() { @Override public void run() { //do action sendData("Timer " + mytime + " fired"); } }, 10000, i*1000); }

--------------解决方案-------------

Timer mytimers[] = new Timer();

我假定这是一个不工作行了? 你不能初始化对象的数组; 一个数组初始化:

Timer mytimers[] = new Timer[6];

使另一种猜测,你也不会初始化各个计时器:

mytimers[i].scheduleAtFixedRate(new TimerTask() {

此时mytimers [我]没有设置任何东西,所以你怎么能叫scheduleAtFixedRate上呢? 首先初始化:

mytimers[i] = new Timer();
mytimers[i].scheduleAtFixedRate(new TimerTask() {

编辑:

您的“抛出:IllegalArgumentException:非正周期。” 是因为在第一次循环, i = 0 ,所以i * 1000 = 0 ,和周期不能为0(“运行此事件每隔0零秒”)。

开始i = 1 ,它应该是罚款。

你有没有想过只是做一个计时器,并把所有的不同的事件在某种(if timeElapsed % timerinterval[1] == 0)然后这样你可以只用一个定时器模拟出不同的时间。 那么你只需要整数与定时器间隔的数组。

用这个:

Timer mytimers[] = new Timer[6];
for(int i = 0;i < 6;i++){
mytimers[i] = new Timer();
final int mytime = i;
mytimers[i].scheduleAtFixedRate(new TimerTask() {

@Override
public void run() {
//do action
sendData("Timer " + mytime + " fired");
}
}, 10000, i*1000);
}

问题是,你调用一个阵列上的定时器()构造函数,从不初始化您的个人计时器。 相反,你应该初始化数组的数组和个人定时器的定时器

分类:java的 时间:2012-02-29 人气:0
本文关键词: Java中,计时器
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.125 (s). 10 q(s)