2015-02-10 107 views
0

需要帮助一下,请。如何使它按以下顺序工作:检查一个i的值,为它运行Timer,只有当该定时器完成时,执行i ++?现在两个计时器同时运行。试图声明布尔isRunning,但没有帮助。停止Java定时器在一个循环中同时执行

for(int i=0;i<pcArray.length;i++){    
      if(pcArray[i]==1){ 
       blinkGreen.start();   } 
      else if(pcArray[i]==2){ 
       blinkRed.start();    
      } 
     } 
+0

不要使用循环,而是让TimerTask本身排队执行以下任务。或者只是在循环中进行睡眠。 – 2015-03-10 13:30:07

回答

0

首先在blinkGreen添加一个布尔变量,并在blinkRed定时器这样,

在BlinkGreen:

boolean isRunningGreen = false; 
    Timer blinkGreen = new Timer();  
    TimerTask task = new TimerTask() { 

    @Override 
    public void run() { 
     // do stuff 
     isRunningGreen = true;//This statement must be placed at the end/bottom of this method 
    } 
    }; 

在BlinkRed:

boolean isRunningRed = false; 
    Timer blinkRed = new Timer();  
    TimerTask task = new TimerTask() { 

    @Override 
    public void run() { 
     // do stuff 
     isRunningRed = true;//This statement must be placed at the end/bottom of this method 
    } 
    }; 

现在试试这个:

for(int i=0;i<pcArray.length;i++){    
      if(pcArray[i]==1){ 
       blinkGreen.start(); 
       while(!isRunningGreen){}//waiting until the task is completed 
      } else if(pcArray[i]==2){ 
       blinkRed.start(); 
       while(!isRunningRed){}//waiting until the task is completed    
      } 
}