如何在java中执行一组计时器

use*_*988 2 java timer

我知道我可能离开这里了,但是我正在尝试创建一个定时器数组,以便mytimer [0] mytimer [1],mytimer [2]等等...以不同的间隔发射,并发送不同的事件到服务器.有任何想法吗?for循环值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);
}
Run Code Online (Sandbox Code Playgroud)

Rei*_*ica 7

Timer mytimers[] = new Timer(); 
Run Code Online (Sandbox Code Playgroud)

我假设这是不起作用的线?您无法使用对象初始化数组; 用数组初始化它:

Timer mytimers[] = new Timer[6];
Run Code Online (Sandbox Code Playgroud)

再猜测一下,你也没有初始化个别计时器:

mytimers[i].scheduleAtFixedRate(new TimerTask() {
Run Code Online (Sandbox Code Playgroud)

此时,mytimers [i]没有任何设置,所以你怎么能打电话scheduleAtFixedRate呢?首先初始化它:

mytimers[i] = new Timer();
mytimers[i].scheduleAtFixedRate(new TimerTask() {
Run Code Online (Sandbox Code Playgroud)

编辑:

你的"IllegalArgumentException:非正面时期".是因为第一次通过循环,i = 0所以i * 1000 = 0,并且周期不能为0("每0秒零运行此事件").

从一开始i = 1就应该没问题.