M
Martin
Gast
Hallo,
ich habe ein Programm geschrieben, was mit 2 Threds arbeitet (einer für die GUI und einer für das Fachkonzept). In beiden threds ist eine while Schleife, die dauerhaft läuft. Das Fachkonzept berechnet etwas und schreibt es in ein Verwaltungsobjekt. Die verwaltung ist mit einer Semaphore realisiert. Die GUI liest das berechnete aus der Verwaltung raus und soll es auf der Oberfläche ausgeben. Beim reinschreiben und rausholen aus der Verwaltung ist noch alles richtig, es wird immer nacheinander put und get aufgerufen und die korekten ergebnisse sind auch enthalten. Habe ich durch System.out.println(.....) (jeweils in der put und get Funktion) rausgefunden.
Aber in der Ausgabe auf der GUI fehlen einige Zahlen, bzw. sind einige Zahlen doppelt vorhanden. Denke mal das dem GUI-Thread bzw. dem Fachkonzept-Thread in der while Schleife der Prozessor entzogen wird und etwas anderes weiter macht und die while schleife später dann wieder von vorne anfängt und die nächste Zahl holt und ausgibt.
Habe schon alles mir denkbare ausprobiert, aber das Problem noch nicht gelöst.
Irgendwie muss es doch machbar sein, in der while schleife zu sagen, dass der Block auf jeden fall erst zu ende gemacht werden muss, bevor der Prozessor entzogen wird. (irgendwie mit synchronized oder so?!)
Hoffe das ihr mir helfen könnt. Schon mal jetzt danke für eure bemühungen und hilfe.
ich habe ein Programm geschrieben, was mit 2 Threds arbeitet (einer für die GUI und einer für das Fachkonzept). In beiden threds ist eine while Schleife, die dauerhaft läuft. Das Fachkonzept berechnet etwas und schreibt es in ein Verwaltungsobjekt. Die verwaltung ist mit einer Semaphore realisiert. Die GUI liest das berechnete aus der Verwaltung raus und soll es auf der Oberfläche ausgeben. Beim reinschreiben und rausholen aus der Verwaltung ist noch alles richtig, es wird immer nacheinander put und get aufgerufen und die korekten ergebnisse sind auch enthalten. Habe ich durch System.out.println(.....) (jeweils in der put und get Funktion) rausgefunden.
Aber in der Ausgabe auf der GUI fehlen einige Zahlen, bzw. sind einige Zahlen doppelt vorhanden. Denke mal das dem GUI-Thread bzw. dem Fachkonzept-Thread in der while Schleife der Prozessor entzogen wird und etwas anderes weiter macht und die while schleife später dann wieder von vorne anfängt und die nächste Zahl holt und ausgibt.
Habe schon alles mir denkbare ausprobiert, aber das Problem noch nicht gelöst.
Irgendwie muss es doch machbar sein, in der while schleife zu sagen, dass der Block auf jeden fall erst zu ende gemacht werden muss, bevor der Prozessor entzogen wird. (irgendwie mit synchronized oder so?!)
Hoffe das ihr mir helfen könnt. Schon mal jetzt danke für eure bemühungen und hilfe.