En fait j'ai travaillé avec les BlockingQueue et le programme tourne. Le problème c'est que les threads consomment énormément de CPU, ça peut aller jusqu'à 75 % même plus.
Chaque classe thread contient la méthode run :
1 2 3 4 5 6 7 8
|
public void run()
{
while (true) {
////traitement
}} |
J'ai essayé d'ajouter un wait dans chaque thread pour ne pas boucler infiniment pour rien,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
public void run()
{
while (true) {
while(queue.isEmpty()){
synchronized (this) {
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
////traitement
}} |
càd tant que la file
queue est vide laisser le thread en sleep.
et je met
queue.notify dans l'endroit où il y a remplissage de la file.
Mais CPU Usage reste élevé.
Partager