2017-03-01 2 views
0

J'ai deux minuteries. L'un d'eux est ensuite exécuté toutes les 5 minutes et l'autre est 10 minutes. Une fois que j'ai lancé l'application, cela fonctionne parfaitement, mais après 11h50 il cesse d'être exécuté.La minuterie ne démarre pas après minuit

Mon code est comme ci-dessous:

//At minute 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, and 55 past every hour from 0 through 4 and every hour. 

for(int hrsTime=1;hrsTime<=4;hrsTime++){ 
    System.out.println("hours start time : "+hrsTime); 
    _log.info("MrkRomeFiles hours start time : "+hrsTime); 
    start_1=0; 
    for(int i=0;i<11;i++){ 
     Calendar today = Calendar.getInstance(); 
     today.set(Calendar.HOUR_OF_DAY, hrsTime);//everyday 1,2,3 and 4 oclock 
     today.set(Calendar.MINUTE, start_1); 
     today.set(Calendar.SECOND, 0); 
     timer.schedule(new MrkRomeFiles(_env), today.getTime(), TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS));      

     System.out.println("minuts start time : "+start_1);     
     _log.info("MrkRomeFiles minuts start time : "+start_1); 

     start_1=start_1+5; 
    } 
}  

//At minute 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, and 55 past every hour from 8 through 23 every hour. 
for(int startTime=8;startTime<=23;startTime++){ 
    int start=0; 
    System.out.println("hours start time : "+startTime); 
    _log.info("MrkRomeFiles hours start time : "+startTime); 
    for(int i=0;i<11;i++){       
     System.out.println("minuts start time : "+start);      
     _log.info("MrkRomeFiles minuts start time : "+start); 
     Calendar today = Calendar.getInstance(); 
     today.set(Calendar.HOUR_OF_DAY, startTime); 
     today.set(Calendar.MINUTE, start); 
     today.set(Calendar.SECOND, 0);      
     timer.schedule(new MrkRomeFiles(_env), today.getTime(), TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS)); 
     start=start+5; 
    } 
} 

//this is for run every 10min 
for(int startTime=0;startTime<=23;startTime++){ 
    _log.info("oracle hour time : : "+startTime); 
    System.out.println("oracle hour time : "+startTime); 
    int startOraMinutes=0; 
     for(int i=0;i<6;i++){ 
      Calendar today = Calendar.getInstance(); 
      today.set(Calendar.HOUR_OF_DAY, startTime); 
      today.set(Calendar.MINUTE, startOraMinutes); 
      today.set(Calendar.SECOND, 0); 
      timer.schedule(new MrkOraFiles(_env), today.getTime(), TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS)); 

      _log.info("oracle minuts time : "+startOraMinutes); 
      System.out.println("oracle minuts time : "+startOraMinutes); 
      startOraMinutes=startOraMinutes+10; 
      } 
     } 

ci-dessous sont les journaux qui sont imprimés:

2017-02-28 23:40:00,556 [  MrkRomeFiles.java:Timer-0:600] - mrkRome file start execution at 2017/02/28 23:40:00 
2017-02-28 23:40:00,616 [  MrkOraFiles.java:Timer-0:179] - mrkOra file start execution at : 2017/02/28 23:40:00 
2017-02-28 23:40:00,627 [  MrkOraFiles.java:Timer-0:179] - mrkOra file start execution at : 2017/02/28 23:40:00 
2017-02-28 23:45:00,557 [  MrkRomeFiles.java:Timer-0:600] - mrkRome file start execution at 2017/02/28 23:45:00 
2017-02-28 23:50:00,557 [  MrkRomeFiles.java:Timer-0:600] - mrkRome file start execution at 2017/02/28 23:50:00 
2017-02-28 23:50:00,617 [  MrkOraFiles.java:Timer-0:179] - mrkOra file start execution at : 2017/02/28 23:50:00 
2017-02-28 23:50:00,627 [  MrkOraFiles.java:Timer-0:179] - mrkOra file start execution at : 2017/02/28 23:50:00 
+0

Exécutez-vous ces boucles exactement à minuit? Ou à tout moment, l'application est lancée? – RealSkeptic

Répondre

1

Pourquoi ne planifiez pas simplement vos tâches pour toutes les 5/10 minutes?

Timer timer = new Timer(); 
    TimerTask task = new TimerTask(){ 
     @Override 
     public void run(){ 
      System.out.println(System.nanoTime()); 
     } 
    }; 

    Calendar today = Calendar.getInstance(); 
    today.set(Calendar.MINUTE, 0); 
    today.set(Calendar.SECOND, 0); 
    timer.scheduleAtFixedRate(task, today.getTime(), TimeUnit.MILLISECONDS.convert(5, TimeUnit.MINUTES)); 
+0

Les tâches de votre minuteur se terminent-elles correctement? Dans le journal, il dit seulement qu'il a commencé, ne consignez-vous pas les temps de fin ou est-ce qu'il plante? –

+0

Salut Jure, merci pour la réponse, j'ai téléchargé le code seulement, est-il nécessaire d'arrêter le minuteur, s'il vous plaît partagez-moi un peu d'indice –