So implementieren Sie den eigenen Thread-Pool von Springboot
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
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; } }
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
- 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.
- (1) Geplante Aufgabe Aufgabeninhalt hinzufügen Ausführbar, Ausführungszyklus-Auslöser/-Datum festlegen, Auslöseausdruck Baidu kann
- (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 abrufen. > object.cancel(true) in der Sammlung
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; } }
scheduleWithFixedDelay(Runnable task,long delay)
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ützung2 @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)
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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

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

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

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.

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;

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

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
