Inhaltsverzeichnis
Eins: ThreadPoolTaskExecutor
1 ThreadPoolTaskScheduler regelmäßig Task -Thread -Pools, um asynchrone Aufgaben zu verarbeiten. Verwenden Sie geplante ThreadPoolTaskScheduler-Aufgaben
(1) ThreadPoolTaskScheduler in ioc einfügen, dann verwendet Scheduled den Thread-Pool ThreadPoolTaskScheduler, der das Single-Thread-Blockierungsproblem lösen kann
Heim Java javaLernprogramm So implementieren Sie den eigenen Thread-Pool von Springboot

So implementieren Sie den eigenen Thread-Pool von Springboot

Jun 28, 2023 pm 04:33 PM
线程池

Eins: ThreadPoolTaskExecutor

1 ThreadPoolTaskExecutor Thread-Pool:

ThreadPoolTaskExecutor ist die sekundäre Kapselung, die auf Javas eigenem Thread-Pool ThreadPoolExecutor basiert. Der Hauptzweck besteht darin, die Verwendung von Thread-Pools im Spring-Framework-System komfortabler zu gestalten Spring Thread-Pool

2 Verwenden Sie ThreadPoolTaskExecutor, um Beans in ioc einzufügen
Konfigurationsdateiformular, Spring konfiguriert automatisch

## 默认线程池配置,ThreadPoolTaskExecutor 
# 核心线程数
spring.task.execution.pool.core-size=8  
# 最大线程数
spring.task.execution.pool.max-size=16
# 空闲线程存活时间
spring.task.execution.pool.keep-alive=60s
# 是否允许核心线程超时
spring.task.execution.pool.allow-core-thread-timeout=true
# 线程队列数量
spring.task.execution.pool.queue-capacity=100
# 线程关闭等待
spring.task.execution.shutdown.await-termination=false
spring.task.execution.shutdown.await-termination-period=
# 线程名称前缀
spring.task.execution.thread-name-prefix=demo_Thread
Nach dem Login kopieren

Konfigurationsformular:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.Executor;
import java.util.concurrent.ScheduledFuture;
//@Configuration
public class ThreadConfig {
    @Value("${task.maxPoolSize}")
    private int maxPoolSize;
    //todo 其他的相关配置都可以通过配置文件中注入
    @Bean("ThreadPoolTaskExecutor")
    public Executor myAsync() {
        final ThreadPoolTaskExecutor executor =
                new ThreadPoolTaskExecutor();
        executor.setMaxPoolSize(maxPoolSize);
        //todo  其他参数设置
        //初始化
        executor.initialize();
        return executor;
    }
}
Nach dem Login kopieren

3 Nach dem Erstellen von Threads werden alle Thread-Pools von ioc abgerufen

4 Thread-Pool-Verarbeitungsprozess :

(1) Überprüfen Sie, ob der Kern-Thread-Pool voll ist. Wenn die Anzahl der Kern-Threads voll ist, prüfen Sie, ob die Aufgabenwarteschlange voll ist Wenn die Aufgabenwarteschlange voll ist, überprüfen Sie die maximale Anzahl an Threads, um die Aufgabe auszuführen. Wenn sie voll ist, führen Sie sie gemäß der Ablehnungsrichtlinie aus.

    CallerRunsPolicy(): Die ursprüngliche Thread-Ausführung
  • AbortPolicy(): Eine Ausnahme direkt auslösen
  • DiscardPolicy(): Direkt verwerfen
  • DiscardOldestPolicy(): Die älteste Aufgabe in der Warteschlange verwerfen.
  • 2: ThreadPoolTaskScheduler

1 ThreadPoolTaskScheduler regelmäßig Task -Thread -Pools, um asynchrone Aufgaben zu verarbeiten. Verwenden Sie geplante ThreadPoolTaskScheduler-Aufgaben

, um die normale Thread-Pool-Nutzung durchzuführen:

Senden (aufrufbar), das Ergebnis muss ausgeführt werden.

Senden (ausführbar), kein Ausführungsergebnis erforderlich.

  • (1) Geplante Aufgabe

    Aufgabeninhalt hinzufügen Ausführbar, Ausführungszyklus-Auslöser/-Datum festlegen, Auslöseausdruck Baidu kann
  • import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
    import java.util.concurrent.ConcurrentHashMap;
    import java.util.concurrent.ConcurrentMap;
    import java.util.concurrent.ScheduledFuture;
    @Configuration
    public class ThreadPoolTaskSchedulerConfig {
        @Bean
        public ThreadPoolTaskScheduler threadPoolTaskScheduler() {
            final ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
            //设置等待任务在关机时l候完成
            threadPoolTaskScheduler.setWaitForTasksToCompleteOnShutdown(true);
            //设置等待时间为60s
            threadPoolTaskScheduler.setAwaitTerminationSeconds(60);
            return threadPoolTaskScheduler;
        }
    }
    Nach dem Login kopieren
  • (2) Intervall angeben Zeit zum Ausführen einer Aufgabe, das Zeitintervall reicht vom Abschluss der vorherigen Aufgabe bis zum Start der nächsten Aufgabe , in Millisekunden
     schedule(Runnable task,Trigger)
     schedule(Runnable task,Date)
    Nach dem Login kopieren

    (4) Abbruch geplanter Aufgaben:

  • Legen Sie die Sammlung für die Speicherung geplanter Aufgaben fest. Das Ergebnis der geplanten Aufgabenausführung ist ScheduledFuture, und speichern Sie das Objekt in der Sammlung. Brechen Sie die geplante Aufgabe ab, indem Sie ScheduledFuture object.cancel(true) in der Sammlung
 scheduleWithFixedDelay(Runnable task,long delay)
Nach dem Login kopieren

Three @Scheduled implementiert die geplante Aufgabe und kommentiert die geplante Aufgabe

1 Verwenden Sie @EnableScheduled, um die Unterstützung zu aktivieren

2 @Scheduled-Anmerkungsmethode

(1) @Scheduled (fixedDelay=5000) verzögerte Ausführung, nach 5 Sekunden ausgeführt

(2) @Scheduled(fixedRate=5000) geplante Ausführung, alle fünf Sekunden ausgeführt

(3) @Scheduled(corn="002* *?") Benutzerdefinierte Ausführung, Maisausdruck Baidu, diese Ausführungsmethode wird häufig verwendet, corn="002**?"Beginnen Sie jeden Tag um zwei Uhr morgens mit der Ausführung geplanter Aufgaben

3 Beachten Sie, dass es sich bei den von @Scheduled gestarteten Aufgaben um Single-Threaded-Aufgaben handelt, die leicht zu blockieren sind

(1) ThreadPoolTaskScheduler in ioc einfügen, dann verwendet Scheduled den Thread-Pool ThreadPoolTaskScheduler, der das Single-Thread-Blockierungsproblem lösen kann

(2) @Scheduled- und @Async-Annotationen ermöglichen geplante Aufgaben, angegeben in @Async("pool") Thread-Pool: Wenn kein Thread-Pool angegeben ist, wird der Thread-Pool SimpleAsyncTaskExecutor von Spring verwendet. Dieser Thread-Pool fügt jedes Mal einen Thread zum Ausführen der Aufgabe hinzu, was ineffizient ist. 4: Asynchrone Aufgaben in Spring

1 @EnableAsync asynchrone Unterstützung

2 @Async ermöglicht asynchrone Aufgaben und gibt den Thread-Pool an

Hinweis: @Scheduled- und @Async-Annotationen ermöglichen geplante Aufgaben und geben den Thread-Pool in @Async("pool") an. Wenn der Thread-Pool nicht angegeben ist, wird Spring's verwendet Der Thread-Pool SimpleAsyncTaskExecutor fügt jedes Mal einen Thread hinzu, um die Aufgabe auszuführen. Wenn @Async die asynchrone Aufgabe jedoch separat aktiviert, wird empfohlen Passen Sie den Thread-Pool entsprechend den Anforderungen an. Hinweis: Der Rückgabewert von @Async kann nur void oder Future sein, der Aufrufer und @Async dürfen nicht in derselben Klasse sein, andernfalls wird aop nicht verwendet Benutzerdefinierter Java-Thread-Pool:

 scheduleAtFixedRate(Runnable task,long delay)
Nach dem Login kopieren

Java-eigener Thread-Pool, Cache, feste Nummer, Single-Threaded, zeitgesteuert,,,, sechs oder sieben Typen, Fortsetzung folgt später

Das obige ist der detaillierte Inhalt vonSo implementieren Sie den eigenen Thread-Pool von Springboot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Python erfasst Informationen und Bewertungen zu Touristenattraktionen und erstellt Wortwolken und Datenvisualisierungen Python erfasst Informationen und Bewertungen zu Touristenattraktionen und erstellt Wortwolken und Datenvisualisierungen Apr 11, 2023 pm 08:49 PM

Hallo zusammen, ich bin Zhanshujun! Wie das Sprichwort sagt: Wäre es nicht toll, Freunde aus der Ferne zu haben? Es macht uns sehr glücklich, wenn Freunde kommen, um mit uns zu spielen, deshalb sollten wir unser Bestes tun, um Vermieter zu sein und unsere Freunde zum Spielen mitzunehmen! Die Frage ist also: Wann ist die beste Zeit und wohin sollte man gehen und wo macht es am meisten Spaß? Heute werde ich Ihnen Schritt für Schritt beibringen, wie Sie den Thread-Pool verwenden, um die Informationen zu Attraktionen zu crawlen, Daten derselben Reise zu überprüfen und eine Wortwolke und Datenvisualisierung zu erstellen! ! ! Informieren Sie sich über Touristenattraktionen in verschiedenen Städten. Bevor wir mit dem Crawlen von Daten beginnen, wollen wir zunächst Threads verstehen. Thread-Prozess: Ein Prozess ist eine laufende Codeaktivität für eine Datensammlung. Er ist die Grundeinheit der Ressourcenzuweisung und -planung im System. Thread: Es handelt sich um einen leichten Prozess, die kleinste Einheit der Programmausführung und einen Ausführungspfad des Prozesses. eins

So verwenden Sie den Thread-Pool, um die zirkuläre Aufgabenplanung in Java 7 zu implementieren So verwenden Sie den Thread-Pool, um die zirkuläre Aufgabenplanung in Java 7 zu implementieren Jul 29, 2023 pm 10:37 PM

Verwendung von Thread-Pools zur Implementierung der zyklischen Aufgabenplanung in Java 7 Einführung: Bei der Entwicklung von Java-Anwendungen kann die Verwendung von Thread-Pools die Effizienz der Aufgabenausführung und die Ressourcennutzung verbessern. In Java7 kann der Thread-Pool verwendet werden, um die kreisförmige Planung von Aufgaben einfach zu implementieren. In diesem Artikel wird erläutert, wie Thread-Pools zum Implementieren der kreisförmigen Aufgabenplanung in Java7 verwendet werden, und es werden entsprechende Codebeispiele angehängt. 1. Übersicht: Der Thread-Pool ist eine Multithread-Verarbeitungsstruktur, die eine feste Anzahl von Threads wiederverwenden kann, um häufige Erstellungen zu vermeiden

Häufige Serverlastprobleme unter Linux-Systemen und deren Lösungen Häufige Serverlastprobleme unter Linux-Systemen und deren Lösungen Jun 18, 2023 am 09:22 AM

Linux ist ein hervorragendes Betriebssystem, das in Serversystemen weit verbreitet ist. Bei der Nutzung von Linux-Systemen kommt es häufig zu Serverauslastungsproblemen. Serverlast bedeutet, dass die Systemressourcen des Servers die aktuellen Anforderungen nicht erfüllen können, was zu einer zu hohen Systemlast und damit zu einer Beeinträchtigung der Serverleistung führt. In diesem Artikel werden häufige Serverlastprobleme und deren Lösungen unter Linux-Systemen vorgestellt. 1. Die CPU-Auslastung ist zu hoch. Wenn die CPU-Auslastung des Servers zu hoch ist, führt dies zu Problemen wie einer langsameren Systemantwort und einer längeren Anforderungsverarbeitungszeit. Als C

So verwenden Sie den Thread-Pool, um die Prioritätsplanung von Aufgaben in Java 7 zu implementieren So verwenden Sie den Thread-Pool, um die Prioritätsplanung von Aufgaben in Java 7 zu implementieren Jul 30, 2023 pm 06:38 PM

So verwenden Sie Thread-Pools, um die Aufgabenprioritätsplanung in Java7 zu implementieren. Bei der gleichzeitigen Programmierung ist die Aufgabenprioritätsplanung eine häufige Anforderung. Java bietet einen Thread-Pool-Mechanismus, mit dem wir Aufgaben einfach verwalten und planen können. In diesem Artikel wird erläutert, wie Sie mithilfe des Thread-Pools die Aufgabenprioritätsplanung in Java7 implementieren. Zunächst müssen wir die grundlegenden Konzepte und die Verwendung von Thread-Pools in Java7 verstehen. Ein Thread-Pool ist ein Thread-Wiederverwendungsmechanismus, der eine Gruppe von Threads verwaltet und plant, um mehrere Aufgaben auszuführen. Java-Erwähnung

Wie gehandhabt man den Service-Thread-Pool und die Aufgabenplanung in der Microservice-Architektur? Wie gehandhabt man den Service-Thread-Pool und die Aufgabenplanung in der Microservice-Architektur? May 17, 2023 am 08:36 AM

Mit der weit verbreiteten Anwendung der Microservice-Architektur in Anwendungen auf Unternehmensebene ist die Frage, wie die Leistung und Stabilität von Microservices optimiert werden kann, in den Mittelpunkt der Aufmerksamkeit gerückt. In Microservices kann ein Microservice Tausende von Anfragen verarbeiten, und der Thread-Pool und die Aufgabenplanung des Service sind ebenfalls wichtige Komponenten der Leistung und Stabilität des Microservices. In diesem Artikel werden Thread-Pools und Aufgabenplanung in der Microservice-Architektur vorgestellt und erläutert, wie die Leistung von Thread-Pools und Aufgabenplanung in Microservices optimiert werden kann. 1. Thread-Pool in der Microservice-Architektur In der Microservice-Architektur belegt jede vom Microservice verarbeitete Anfrage ihren Thread-Pool.

Wo ist der Spring-Thread-Pool konfiguriert? Wo ist der Spring-Thread-Pool konfiguriert? Jan 19, 2024 pm 04:55 PM

Methoden zum Konfigurieren des Spring-Thread-Pools: 1. Verwenden Sie ThreadPoolTaskExecutor; 3. Verwenden Sie TaskExecutor-Bean in XML; 7. Integration und Container 8. Programmatische Konfiguration; 10. Hybride Konfiguration;

So verwenden Sie die ExecutorCompletionService-Funktion in Java für die Thread-Pool-Aufgabenplanung So verwenden Sie die ExecutorCompletionService-Funktion in Java für die Thread-Pool-Aufgabenplanung Jun 26, 2023 pm 02:49 PM

Mit der Entwicklung der Internet-Technologie ist die Bedeutung der Multithread-Programmierung immer wichtiger geworden. Beim Schreiben von Programmen mit hoher Parallelität kann die vollständige Nutzung der Multithreading-Technologie die Ausführungseffizienz des Programms erheblich verbessern. Die Multithread-Programmierung selbst bringt jedoch viele Probleme mit sich, z. B. die Kommunikation zwischen Threads, die Synchronisationskooperation usw. Um diese Probleme zu lösen, stellt Java viele Thread-Pool-Frameworks bereit, darunter ExecutorCompletionService. In diesem Artikel wird ExecutorCompletionServi vorgestellt

So implementieren Sie den eigenen Thread-Pool von Springboot So implementieren Sie den eigenen Thread-Pool von Springboot Jun 28, 2023 pm 04:33 PM

1: ThreadPoolTaskExecuto1 ThreadPoolTaskExecutor Thread-Pool: ThreadPoolTaskExecutor ist eine sekundäre Kapselung von Spring, die auf Javas eigenem Thread-Pool ThreadPoolExecutor basiert. Der Hauptzweck besteht darin, die Verwendung von Thread-Pools im Spring-Framework-System komfortabler zu gestalten . Verwenden Sie ThreadPoolTaskExecutor, um Beans zu injizieren. Gehen Sie zum Konfigurationsdateiformular in ioc. Spring konfiguriert automatisch die ##Standard-Thread-Pool-Konfiguration, ThreadPoolTaskExecutor#Core

See all articles