Threads Barrier mit wait()/notify() aber nicht alle Prozesse terminieren

Bastiii

Neues Mitglied
Hallo,

ich wollte eine Barrier Klasse schreiben, die mithilfe von wait()/notify() die Threads erst weiterlaufen lässt, wenn eine bestimmte Anzahl an Threads einen bestimmten Punkt erreicht. Das Problem ist jedoch wenn der letzte Thread an diesem Punkt ankommt, dieser auch weitergeht und die anderen wecken sollte. Jedoch werden die wartenden Threads anscheinend nicht richtig geweckt. Kann mir jemand sagen wo mein Fehler liegt und warum es so wie ich das programmiert habe nicht funktioniert?

Danke im voraus!

Grüße Bastiii

Code:
public class Barrier extends Thread{
	private final int threadNumber=3;
	private static int anzahlAktuell=0;
	public boolean cond = false;
	
	public Barrier(){
		super();
	}
	public synchronized void barrier(){
//		anzahlAktuell.incrementAndGet();
//		System.out.println(anzahlAktuell.incrementAndGet());
		anzahlAktuell++;
		System.out.println(anzahlAktuell);
		if(anzahlAktuell == threadNumber){
			cond=true;
		}
		while(!cond){
			try{
				System.out.println("Ich bin am warten "+ this.getId());
				this.wait();
//				this.sleep(2000);
			}catch(InterruptedException e){
				
			}
		}
		System.out.println("Verlasse die schleife");
//		setSomething();
		notifyAll();
		System.out.println("Alle frei "+this.getId());
	}
//	public void setSomething(){
//		System.out.println("Methode die alle befreit: ");
//		notifyAll();
//	}
	public void run(){
		this.barrier();
	}

}
Code:
public class hilf {
	public static void main(String[]args) throws InterruptedException{
		Barrier b1 = new Barrier();
		Barrier t1 = new Barrier();
		Barrier t2 = new Barrier();
		 b1.start();
		 t1.start();
		 t2.sleep(4000);
		 t2.start();
	}

}
 

Daelras

Mitglied
Hi,

jede deiner Barrier-Instanzen hat eine eigene Variable "cond". Auf true gesetzt wird sie aber nur auf der letzten.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
mrbig2017 Threads wait wird nicht durch notify beendet! Allgemeine Java-Themen 3
K Multithreading: Service(Task), wait und continue Allgemeine Java-Themen 21
G Threads Threadprogrammierung wait() und notify() Allgemeine Java-Themen 4
J Thread wait() Allgemeine Java-Themen 2
J Swing Cursor.WAIT funktioniert nicht nach JFileChooser Allgemeine Java-Themen 1
T Wait/Notify() bei Thread Allgemeine Java-Themen 6
A System freezes when trying to run external command from Java with wait for Allgemeine Java-Themen 3
P Threads abwechseln lassen mit wait() und notify() Allgemeine Java-Themen 2
M Java Threads - Wait Notify - Verständnisproblem Allgemeine Java-Themen 5
K Threads wait() und notify() Allgemeine Java-Themen 8
Q Frage zu Threads ( notify() wait() ) Allgemeine Java-Themen 6
G Thread wait, notify Allgemeine Java-Themen 4
T Threadsicheres wait() [lock erst mit wait() abgeben] Allgemeine Java-Themen 31
J synchronized block mit this und wait() Allgemeine Java-Themen 5
G Process.wait() auf Folgeprozesse mitwarten Allgemeine Java-Themen 29
H wait() and notify() mit mehreren Prozessen Allgemeine Java-Themen 14
G Thread wait() auf Nicht-Thread Klasse Allgemeine Java-Themen 5
A thread1 stoppt thread2 mit wait() und notify() ? Allgemeine Java-Themen 3
M Thread mit wait anhalten, wie weiterlaufenlassen? Allgemeine Java-Themen 3
M wait in Thread einschieben? Allgemeine Java-Themen 4
C p.wait() bremst aus Allgemeine Java-Themen 4
N java.lang.IllegalMonitorStateException: object not locked by thread before notify() Allgemeine Java-Themen 2
B notify() - was passiert danach genau? Allgemeine Java-Themen 8
L Producer/Consumer Thread mit notify auf File Allgemeine Java-Themen 5
G notify() was wird verständigt Allgemeine Java-Themen 5
K synchronized und notify / notifyAll Allgemeine Java-Themen 8
G MVC-Konzept - effizienz beim "notify" Allgemeine Java-Themen 2
M Unterschied notify() und notifyAll() Allgemeine Java-Themen 1
S Unterschied zwischen notify() und notifyAll() Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben