Java – Ausnahme bei der Ausführung geplanter Frühlingsaufgaben
phpcn_u1582
phpcn_u1582 2017-05-17 10:02:53
0
1
1083

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_u1582
phpcn_u1582

Antworte allen(1)
过去多啦不再A梦

我猜测你并没有指定定时任务的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任务的执行时间将延后,甚至不执行。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage