Heim > Java > javaLernprogramm > So lösen Sie mehrere Timer-Konflikte in Spring Boot

So lösen Sie mehrere Timer-Konflikte in Spring Boot

王林
Freigeben: 2023-05-17 08:07:05
nach vorne
1755 Leute haben es durchsucht

Nutzungsszenario

Unser Bestellservice hat im Allgemeinen eine zu bezahlende Bestellung, und diese zu bezahlende Bestellung ist zeitlich begrenzt. Beispielsweise ist die Bestellung von Alibaba fünf Tage und die Bestellung von Taobao ein Tag , Pinduoduo-Bestellungen dauern einen Tag, Meituan-Bestellungen dauern 15 Minuten...

Wie man im Fondssystem Fondsinformationen in mehreren Speicherpartitionen gleichzeitig aktualisiert ... Im Allgemeinen in der tatsächlichen Entwicklung , Timer müssen das Problem der gleichzeitigen Parallelität mehrerer Timer sowie das Problem von Konflikten zwischen Timern lösen ... Sie werden verstehen, nachdem Sie einen Blick darauf geworfen haben

Problemszenenwiedergabe#🎜 🎜#

#🎜 🎜#

Wir sehen deutlich, dass die Ausführungsergebnisse alle geplant sind-1So lösen Sie mehrere Timer-Konflikte in Spring Boot

Daraus kann geschlossen werden, dass der Springboot-Timer standardmäßig auf Single-Threaded eingestellt ist. Aber das Problem ist: Wenn die Ausführung eines Threads lange dauert, nachdem Threads um Ressourcen konkurrieren, was ist dann mit anderen Timern? kann nur in den Wartezustand wechseln, desto mehr Timer warten insgesamt, was leicht zu einer Lawine führen kann...

So lösen Sie mehrere Timer-Konflikte in Spring BootTatsächlich müssen Sie nur eine Konfigurationsklasse hinzufügen Fügen Sie Anmerkungen hinzu, um das Problem zu lösen 🎜#Konfigurationsklasse

Der spezifische Code lautet wie folgt:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Date;
@Component
public class SchedulerTaskController {
    private Logger logger= LoggerFactory.getLogger(SchedulerTaskController.class);
    private static final SimpleDateFormat dateFormat=new SimpleDateFormat("HH:mm:ss");
    private int count=0;
    @Scheduled(cron="*/6 * * * * ?")
    @Async("threadPoolTaskExecutor")
    public void process(){
        logger.info("英文:this is scheduler task runing "+(count++));
    }
    @Scheduled(fixedRate = 6000)
    @Async("threadPoolTaskExecutor")
    public void currentTime(){
        logger.info("中文:现在时间"+dateFormat.format(new Date()));
    }
}
Nach dem Login kopieren

Dann können wir klar sehen:

Das obige ist der detaillierte Inhalt vonSo lösen Sie mehrere Timer-Konflikte in Spring Boot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage