Hallo zusammen,
ich habe 3 Klassen A,B,C die Runnable implementieren.
Alle 3 haben eine boolsche Variable die in einer While schleife geprüft wird. Ca so sieht das aus:
Ich dachte, die booleans stopThread verweisen alle auf die selbe Adresse im Speicher, so dass sollte irgendwo etwas anderes zugewiesen werden (Z. 27) sich bei den anderen die Werte ebenfalls ändern. Tut es aber anscheinend nicht, liegt das daran, dass das in unterschiedlichen Klassen steht? Oder weil die Threads eigene Speicherstacks haben?
Wie lässt sich so etwas dann aber realisieren?
ich habe 3 Klassen A,B,C die Runnable implementieren.
Alle 3 haben eine boolsche Variable die in einer While schleife geprüft wird. Ca so sieht das aus:
Java:
public class A implements Runnable{
private boolean stopThread;
public A(){this.stopThread = false;}
public run(){
threadPool.execute(new B(this.stopThread));
threadPool.execute(new C(this.stopThread));
while(!this.stopThread){
//...
}
//...
}
public class B implements Runnable{
private boolean stopThread;
public B(boolean pStopThread){ this.stopThread = pStopThread;}
public run(){
while(!this.stopThread){
//...
}
//...
}
public class C implements Runnable{
private boolean stopThread;
public C(boolean pStopThread){ this.stopThread = pStopThread;}
public run(){
while(!this.stopThread){
//...
this.stopThread = true;//IN ALLEN 3 THREADS SOLLEN DIE WHILEs STOPPEN
}
//...
}
Ich dachte, die booleans stopThread verweisen alle auf die selbe Adresse im Speicher, so dass sollte irgendwo etwas anderes zugewiesen werden (Z. 27) sich bei den anderen die Werte ebenfalls ändern. Tut es aber anscheinend nicht, liegt das daran, dass das in unterschiedlichen Klassen steht? Oder weil die Threads eigene Speicherstacks haben?
Wie lässt sich so etwas dann aber realisieren?