Heim  >  Fragen und Antworten  >  Hauptteil

Java – Ausnahme bei der Ausführung geplanter Frühlingsaufgaben

Die Aufgabe wurde ursprünglich jeden Tag von Montag bis Freitag um 1 Uhr morgens ausgeführt. Nachdem ich das Protokoll überprüft hatte, stellte ich fest, dass sie am Sonntag um 20:00 Uhr ausgeführt wurde. Um die möglichen Gründe herauszufinden, handelt es sich bei dem Server um eine Single-Core-CPU.
Zusätzlich: Es gibt zwei ABs in meiner Klasse für geplante Aufgaben. Geplante Aufgaben, Aufgabe A wird von Montag bis Freitag um 1 Uhr ausgeführt (@Scheduled(cron = "0 0 1 ? MON-FRI")), Aufgabe B ist jeden Tag um 3 Uhr ausgeführt (@Scheduled(cron = "0 0 3 ? *")), überprüfen Sie das Protokoll und stellen Sie fest, dass von Montag bis Freitag zuerst Aufgabe A und dann Aufgabe B, also B, ausgeführt wird wird ausgeführt, ohne bis 3 Uhr zu warten; wenn es Samstag und Sonntag ist, wird Aufgabe B um 3 Uhr ausgeführt, aber Aufgabe A wurde am Sonntag um 20:00 Uhr ausgeführt. . .

phpcn_u1582phpcn_u15822713 Tage vor967

Antworte allen(1)Ich werde antworten

  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-17 10:04:53

    我猜测你并没有指定定时任务的pool size,所以默认所有schedule的共用一个线程。需要指定schedule 的pool size大小

    xml

    <task :annotation-driven scheduler ="myScheduler" />
    <task :scheduler id ="myScheduler" pool-size ="10" />

    bean

      @Bean(destroyMethod = "shutdown")
        public Executor taskScheduler() {
            return Executors.newScheduledThreadPool(10);
        }

    补充:
    共用一个线程将带来严重的问题。如果A任务没有在2小时内执行完,那么B任务的执行时间将延后,甚至不执行。

    Antwort
    0
  • StornierenAntwort