Bonjour,

A priori, vu les fuites mémoires et le nombre de threads qui augmente sans cesse, il doit y avoir un problème dans la façon dont c'est codé dans l'application.

Voici la fonction appelée régulièrement :
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
23
24
25
26
27
28
29
30
@Transactional
public List<InformationValideur> lectureJournee() {
	try {
		//Toutes les 60s : nouveau thread de rechargement
		@Transactional
		final class Launch implements Runnable {
			public void run() {
				try {
					if (!ChargementJourneeEnCours) {
						ChargementJourneeEnCours = true;
						listeInformationValideurJournee = lectureJourneeCourante();
						dateDernierChargementJournee = new Date();
						ChargementJourneeEnCours = false;
					}
				} catch (Exception e) {
					e.printStackTrace();
					ChargementJourneeEnCours = false;
					dateDernierChargementJournee = null;
				}
			}
		}
 
		Launch l = new Launch();
		Thread internalThread = new Thread(l);
		internalThread.start();
		} catch (Exception e) {
			ChargementJourneeEnCours = false;
		}
		return listeInformationValideurJournee;
	}
-->est-ce que quelque chose de mal saute aux yeux?
1°/Devrait-on explicitement glisser dans la méthode run() des instructions Thread.currentThread().interrupt(); ?
2°/Normalement on s'assure de n'appeler lectureJourneeCourante() qu'une fois mais est-ce que mettre cette fonction en synchronized peut être utile?


Merci.
Ci-dessous le code plus complet.