Dans certains cas, nous devons attribuer différents pools de threads pour exécuter plusieurs tâches dans le projet. Par conséquent, différentes tâches sont contrôlées en surveillant différents pools de threads. Pour y parvenir, un pool multi-thread doit être configuré dans le projet.
Spring Boot fournit des solutions de configuration et d'utilisation du pool de threads simples et efficaces.
Configuration
Tout d'abord, configurez les haricots de pool de threads à remettre à la gestion du printemps:
@Configurationpublic classe taskexecutepool {@bean (name = "threadpoola") public threadpooltaskexecutormytaskasyncpool () {threadpooltaskexecutor exécutor = new ThreadPoolTasKexECUTOR (); Executor.SetCorePoolSize (4); EMECTOR.SetMaxPoolSize (8); Executor.SetQueUeCapacity (100); Executor.SetkeepalivesEnconds (60); Executor.SetThreadNamePrefix ("Pool-A"); Executor.SetRejectEdExecutionHandler (new ThreadPoolExecutor.CallerRunspolicy ()); exécuteur.Initialize (); return exécuteur; } @Bean (name = "ThreadpoolB") public ThreadPoolTasKExECutorasyncPoolB () {ThreadPoolTasKExECUTOR exécutor = new ThreadPoolTasKExEcutor (); Executor.SetCorePoolSize (2); Executor.SetMaxPoolSize (4); EMECTOR.SetQueUeCapacity (8); Executor.SetkeepalivesEnconds (60); Executor.SetThreadNamePrefix ("Pool-B"); // La politique utilisée lorsque le nombre de tâches dépasse MaxpoolSize et Quélucapacité. Cette politique consiste à appeler le thread de la tâche pour exécuter exécutor.SetRejectEdExecutionHandler (new ThreadPoolExecutor.CallerRunspolicy ()); exécuteur.Initialize (); return exécuteur; }} utiliser
L'utilisation de threads ne nécessite que l'annotation sur la méthode d'exécution, et la classe de la méthode doit être définie comme un haricot et remise à Spring pour gérer.
Vous pouvez utiliser Annotations @Component, @Service, etc. sur la classe
@Async (value = "threadpoola") public void taska () {...} Vérifiez le nombre de fils actifs:
@Autowired Private ThreadpoolTasKExEcutor Threadpoola; // Le nom de la variable est le nom du nom de bean de pool de thread défini. public void checkAvTiVetHreadnum () {int num = threadpoola.getActiveCount ();}Bien sûr, il existe d'autres méthodes, donc je ne donnerai aucun exemple ici.
Compréhension de chaque attribut du pool de threads:
CorePoolSize: représente le thread de core de pool de threads et le nombre de threads ouverts dans des circonstances normales.
QureueCapacity: Lorsque les threads de base exécutent des tâches, il y a encore des tâches supplémentaires qui seront enregistrées ici.
MaxpoolSize: Si la qu que la qu que la qu que la file d'attente est pleine, plus de threads seront démarrés jusqu'à ce que le nombre de threads atteigne MaxPoolSize. S'il y a encore des tâches, elle sera traitée en fonction de la politique de rejet.
Il existe de nombreuses stratégies de rejet:
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.