Bonjour,

suite à quelques soucis avec ma propre classe de gestion des threads, j'ai décidé d'utiliser un ThreadPoolExecutor avec une SynchronousQueue.

Voilà exactement ce que je veux faire :
- je veux disposer de N threads, ni plus ni moins.
- je ne veux surtout pas que ces threads soient détruits après utilisation car ils vont être réutilisés de nombreuses fois.
- je veux pouvoir passer des paramètres pour les calculs.

Voici ma classe qui étend la classe Thread qui effectue les calculs :
Code java : 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
 
private class MaClasseThread extends Thread
{
 
private int number = -1 ;
 
public MaClasseThread(int number)
	{
	super() ;
	this.number = number ; // Numéro unique (bien évidemment).
	}
 
public void Parameters(Object... parameters)
	{
	// ... on récupère les paramètres
	}
 
public void run()
	{
	// ... on fait la travail ici en fonction des paramètres
	}
}


Je construits ma synchronous queue et mon ThreadPoolExecutor :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
	BlockingQueue<Runnable> queue = new SynchronousQueue<Runnable>() ;
	for (int i=0 ; i < N ; i++)
		queue.add(new MaClasseThread(i)) ;
 
	ThreadPoolExecutor tpe = new ThreadPoolExecutor(N, N, ?, TimeUnit.MILLISECONDS, queue) ;
J'ai mis un '?' car je ne sais pas quoi mettre car je veux les garder vivant indéfiniment.

Questions :
- comment récupérer le premier thread libre ?
- comment lui passer le travail que je souhaite ?
- comment le lancer après passage des paramètre de calcul ?


Merci par avance