如何在java中创建计时器数组

如何在java中创建计时器数组,java,timer,Java,Timer,我知道我可能离这里很远,但我正在尝试创建一个计时器数组,以便mytimer[0]mytimer[1]、mytimer[2]等等。。。所有事件都以不同的时间间隔触发,并将不同的事件发送到服务器。有什么想法吗?for loop值6是一个仅用于测试目的的有机数字。这个数字稍后将根据程序xml文件中的设置来确定 Timer mytimers[] = new Timer[6]; for(int i = 0;i < 6;i++){ final int mytime = i; myti

我知道我可能离这里很远,但我正在尝试创建一个计时器数组,以便mytimer[0]mytimer[1]、mytimer[2]等等。。。所有事件都以不同的时间间隔触发,并将不同的事件发送到服务器。有什么想法吗?for loop值6是一个仅用于测试目的的有机数字。这个数字稍后将根据程序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[]=新定时器[6];
对于(int i=0;i<6;i++){
最终int mytime=i;
mytimers[i].scheduleAtFixedRate(新TimerTask(){
@凌驾
公开募捐{
//行动
sendData(“计时器”+mytime+“已启动”);
}
},10000,i*1000);
}
我想这条线不行吧?不能用对象初始化数组;使用数组初始化它:

Timer mytimers[] = new Timer[6];
再猜一次,您也没有初始化单个计时器:

mytimers[i].scheduleAtFixedRate(new TimerTask() {
此时,mytimers[i]未设置为任何值,因此如何对其调用
scheduleAtFixedRate
?首先初始化它:

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

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


i=1开始就可以了。

你有没有想过只做一个计时器,把所有不同的事件放在某种
中(如果timeappeased%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);
}
Timer mytimers[]=新定时器[6];
对于(int i=0;i<6;i++){
mytimers[i]=新计时器();
最终int mytime=i;
mytimers[i].scheduleAtFixedRate(新TimerTask(){
@凌驾
公开募捐{
//行动
sendData(“计时器”+mytime+“已启动”);
}
},10000,i*1000);
}

问题是,您正在对数组调用Timer()构造函数,而从不初始化单个计时器。相反,您应该将数组初始化为数组,将单个计时器初始化为计时器。

当我从netbeans ide运行它时,它会在我身上抛出:[ERROR]:java.lang.NullPointerException。第一行是否编译?数组在哪里?那行怎么可能编译?我知道。我同意并表示不相信OP的代码可能编译或运行。正确…我复制并粘贴了错误的行。我有计时器mytimers[]=新计时器[6];它编译时没有错误,但在Netbeans IDE输出中抛出上述错误window@user1305988-请将您的确切代码复制并粘贴到问题中。好的,我对它们进行了更改,现在在IDE输出窗口中出现了一个新错误:[错误]:java.lang.IllegalArgumentException:非正句点。
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);
}