Inner Class ou passage d'instance
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:
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:
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