In einigen Fällen müssen wir verschiedene Threadpools zuweisen, um mehrere Aufgaben im Projekt auszuführen. Daher werden unterschiedliche Aufgaben durch Überwachung verschiedener Fadenpools gesteuert. Um dies zu erreichen, muss ein Multi-Thread-Pool im Projekt konfiguriert werden.
Spring Boot bietet einfache und effiziente Thread -Pool -Konfiguration und Nutzungslösungen.
Konfiguration
Konfigurieren Sie zunächst die Fadenbeckenbohnen so, dass sie dem Frühlingsmanagement übergeben werden:
@ConfigurationPublic Class Taskexecutepool {@Bean (name = "threadpoola") public threadPooltaskexecutormytaskasyncpool () {Threadpooltaskexecutor Executor = new Threadpooltaskexecutor (); Executor.SetCorepoolSize (4); Executor.SetMaxpoolSize (8); Executor.SetqueUecapacity (100); Executor.SetkeepaliveSeconds (60); Executor.SetthreadnamePrefix ("Pool-a"); Executor.SetRejecteDexecutionHandler (neuer ThreadPoolexecutor.Callerrunspolicy ()); Executor.initialize (); Rückgabereiter; } @Bean (name = "threadpoolB") public threadPooltasexecutorasyncpoolB () {Threadpooltasexecutor executor = new threadPooltaskexecutor (); Executor.SetCorepoolSize (2); Executor.SetMaxpoolSize (4); Executor.SetqueUecapacity (8); Executor.SetkeepaliveSeconds (60); Executor.SetthreadnamePrefix ("Pool-B"); // Die Richtlinie, die verwendet wird, wenn die Anzahl der Aufgaben Maxpoolsize und Queuecapacity überschreitet. Diese Richtlinie soll den Thread der Aufgabe aufrufen, um executor.setRejecteTexecutionHandler (neuer ThreadPoolexecutor.CalRrunspolicy ()) auszuführen. Executor.initialize (); Rückgabereiter; }} verwenden
Die Verwendung von Threads erfordert nur Annotation für die Ausführungsmethode, und die Klasse der Methode muss als Bohne definiert und an die Frühling übergeben werden, um sie zu verwalten.
Sie können Anmerkungen @Component, @Service usw. in der Klasse verwenden
@ASync (value = "threadpoola") public void taska () {...} Überprüfen Sie die Anzahl der aktiven Threads:
@Autowired Private ThreadPooltaskexeCutor Threadpoola; // Der variable Name ist der Name des definierten Thread -Pool -Bean -Namens. public void checkavtivetHeadnum () {int num = threadpoola.getActiveCount ();}Natürlich gibt es andere Methoden, daher werde ich hier keine Beispiele geben.
Verständnis jedes Attributs des Threadpools:
CorepoolSize: Repräsentiert den Thread Pool Core -Thread und die Anzahl der unter normalen Umständen geöffneten Threads.
Queuekapazität: Wenn die Kern -Threads Aufgaben ausführen, gibt es hier noch zusätzliche Aufgaben, die hier gespeichert werden.
Maxpoolsize: Wenn die Queuekapazität voll ist, werden mehr Threads gestartet, bis die Anzahl der Threads Maxpoolsize erreicht. Wenn es noch Aufgaben gibt, wird es gemäß der Ablehnungsrichtlinie bearbeitet.
Es gibt viele Ablehnungsstrategien:
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.