IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

Exécution asynchrone ne fonctionne pas avec Spring Async


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 200
    Par défaut Exécution asynchrone ne fonctionne pas avec Spring Async
    Bonsoir,

    J'ai créé un projet de test pour tester l'exécution d'une méthode asynchrone avec Spring mais cela ne fonctionne pas comme prévu.
    La méthode testée s'exécute toujours dans le même thread. dont l'ID est 1.
    Le test qui devrait passé se nomme : shouldTestAsynchronousExecution().

    J'ai mis en ligne ce projet de test sous Github dont voici le lien : https://github.com/bernidupont/asyncProject

    Avez-vous une idée de la cause de ce mauvais comportement ?

    Merci d'avance pour votre aide.

    Berni.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 200
    Par défaut
    Pour information voici une vue du code utilisé :

    Le point d'entrée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @SpringBootApplication
    public class Application {
     
    	public static void main(String[] args) {
    		SpringApplication.run(Application.class, args);
    	}
    }
    La configuration de mon thread (optionnelle) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    @Configuration
    @EnableAsync
    public class ThreadConfig {
     
        @Bean("specificTaskExecutor")
        public TaskExecutor threadPoolTaskExecutor() {
            ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
            executor.setCorePoolSize(1);
            executor.setMaxPoolSize(4);
            executor.setThreadNamePrefix("testThread");
            executor.initialize();
            return executor;
        }
    }
    La méthode asynchrone exécutée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @Component
    public class PrintThreadId {
     
        @Async("specificTaskExecutor")
        public static Long runFromAnotherThreadPool() throws InterruptedException {
            Long threadId = Thread.currentThread().getId();
            TimeUnit.SECONDS.sleep(1);
            System.out.println("Thread Id :" + threadId);
            return threadId;
        }
     
    }
    Le test qui est ko :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class ApplicationTests {
     
    	@MockBean
    	PrintThreadId printThreadId;
     
    	@Test
    	public void shouldTestAsynchronousExecution() throws InterruptedException {
     
    		final Integer NB_EXPECTED_THREAD = 10;
    		ArrayList<Long> threadIds = new ArrayList<>();
     
    		for (int i=0; i<NB_EXPECTED_THREAD; i++) {
    			Long threadId = printThreadId.runFromAnotherThreadPool();
    			if (!threadIds.contains(threadId)) {
    				threadIds.add(threadId);
    			}
    		}
    		assertTrue(threadIds.size()==NB_EXPECTED_THREAD);
    	}
    }

Discussions similaires

  1. [MVC] Propriété readonly ne fonctionne pas avec Spring
    Par pontus21 dans le forum Spring Web
    Réponses: 0
    Dernier message: 22/04/2009, 16h36
  2. Réponses: 1
    Dernier message: 25/01/2007, 18h19
  3. evenement onclick ne fonctionne pas avec explorer??
    Par nath-0-0 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 15/03/2006, 12h13
  4. Réponses: 7
    Dernier message: 24/01/2006, 11h03
  5. window.resizeTo ne fonctionne pas avec firefox?
    Par FrankOVD dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/06/2005, 15h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo