Bonjour à tous,

je m'interrroge sur la manière la plus correcte de procéder. J'ai une classe A qui instancie une thread B. The thread B à besoin de lancer des méthodes de A.

Est il plus correcte de passer par une inner class :

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
public class A
{
	public void A()
	{
		B theB = new B();
		theB.start();
	}
 
	public doSomethingInA()
	{
	}
 
	public class B implements Runnable {
 
 
		public void start()
		{
			Thread thread = new Thread(this);
			thread.start();
		}
 
		public void run() {
			while(thread != null) {
				doSomethingInA();
			}
		}
	}
}
Ou alors puis je sans problème passer l'instance de A à B :
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
31
32
33
public class A
{
	public A()
	{
		B theB = new B(this);
		theB.start();
	}
 
	public doSomethingInA()
	{
	}
}
 
public class B implements Runnable 
{
	private A instanceA
	public B(A instanceA )
	{
		this.instanceA = instanceA
	}
 
	public void start()
	{
		Thread thread = new Thread(this);
		thread.start();
	}
 
	public void run() {
		while(thread != null) {
			instanceA.doSomethingInA();
		}
	}
}
Cette dernière solution à ma préférence au niveau clareté du code et découpage des fichiers mais est elle aussi efficace que l'autre. Ne développant que occasionnellement en JAVA j'ai un peu peur des conséquences que pourrait avoir l'une ou l'autre des méthodes (fuite mémoire, performance, ...)

merci pour vos conseils