2013-12-11 4 views
0

В приведенной ниже программе программы мне нужно, чтобы Thread класс Count должен был приостановить запись на консоль, когда count.sleep() требует 30000 ms, и это должно происходить в каждом временном интервале 1000 ms. Когда я запускаю программу, запись на консоль не останавливается. Он печатает непрерывно, не дожидаясь 30000 ms. Пожалуйста, помогите мне понять, что происходит не так.Как приостановить выполнение Thread?

Какое решение для остановки Thread класс Count для конкретного периода времени в каждом временном интервале?

import java.util.Timer; 
import java.util.TimerTask; 

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 
/** 
* 
* @author admin 
*/ 
public class Test { 

    Test() { 
     Count count = new Count(); 
     count.start(); 
     TimerTask task = new RunMeTask(count); 
     Timer timer = new Timer(); 
     timer.schedule(task, 1000, 60000); 
    } 

    public static void main(String[] argu) { 
     Test test = new Test(); 

    } 

    public class Count extends Thread { 

     @Override 
     public void run() { 
      int i = 0; 
      do { 
       System.out.println(i++); 
      } while (true); 
     } 
    } 

    public class RunMeTask extends TimerTask { 

     private final Count count; 

     RunMeTask(Count count) { 
      this.count = count; 
     } 

     @Override 
     public void run() { 
      synchronized (count) { 
       try { 
        count.wait(30000); 
       } catch (InterruptedException ex) { 
        System.out.println(ex.toString()); 
       } 
      } 
     } 
    } 
} 
+0

будет легко использовать Thread.sleep. и btw wait используется с уведомлением. google для ожидания и уведомления примеров – qwr

+1

См. здесь: http://stackoverflow.com/questions/20516223/avoiding-wait-notify-in-a-utility-to-suspend-resume-threads – TwoThe

ответ

0

RunMeTask нить будет ждать не граф. Оба потока являются отдельными и выполняются отдельно.

Смежные вопросы