J'ai une boucle principale qui envoie des requêtes à un système externe. Le système externe peut prendre quelques secondes ou même quelques minutes pour répondre.
En outre, si le nombre de requêtes atteint MAX_REQUESTS, la boucle for actuelle doit être SLEEP pendant quelques secondes.Java Thread Sleep
Ceci est mon scénario. Disons que la boucle for principale se met en veille pendant 5 secondes parce qu'elle a atteint le MAX_REQUESTS. Ensuite, dites qu'une requête externe précédente renvoie des retours de callExternalSystem(). Qu'adviendra-t-il du thread principal de boucle fortifiée qui est actuellement dans l'état SLEEP? Sera-t-il interrompu et poursuivra le traitement ou continuera-t-il de dormir?
for(...){
...
while(numRequestsProcessing > MAX_REQUESTS){
Thread.sleep(SLEEP_TIME);
}
...
callExternalSystem();
}
Merci d'avance.
ajoutez-vous un sommeil dans une tentative d'autoriser numRequestsProcessing à descendre? donc vous ne permutez pas le service? un pool de threads fixe vous donnerait (plus ou moins) ou faire une co-op inter-thread via wait/notifiy/conditions ..? – Toby