Probleme beim Beenden eines Threads

Milo

Bekanntes Mitglied
Hallo,

ich lasse in einem Thread eine iterative Berechnung durchführen. Über einen Statuscode kann ich abfragen, ob die Berechnung noch läuft oder beendet wurde. Der entsprechende Code sieht somit wie folgt aus:

Java:
if (aaa2d != null) 
  new Thread( aaa2d ).start();

while (true) {
  status2d = (aaa2d == null)?100:aaa2d.getCurrentEstimationStatus();
				
  //System.out.println("Berechnungsstatus " + status2d);
  if (status2d != 0) {
    break;
  }
}
System.out.println("ENDE");

Solange die Berechnung läuft, ist der Status 0. Bricht die Berechnung ab - warum auch immer - ändert sich dieser Wert auf 1 oder -1.

Lasse ich den Code so, wie gezeigt, wird die while-Schleife nicht mehr verlassen. Entferne ich den Kommentar bei System.out.println innerhalb der Schleife, sehe ich, wie der Staus irgendwann von 0 auf 1 springt und die Schleife sofort beendet wird. Wie kann das sein?

In meiner run-Methode, die gestartet wird, wird der Status auch korrekt ausgegeben:

Java:
public void run() {
  this.adjust();
  System.out.println(this.getCurrentEstimationStatus()); // liefert 1
}

Kann mir einer einen Tipp geben, warum das so ist?

Gruß Micha
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Ein bißchen mehr Kontext könnte hilfreich sein. Es klingt, als sollte das eher durch ein wait/notify gelöst werden: Der eine Thread ist ja zu 100% damit ausgelatet, ständig den status abzufragen. Es KÖNNTE auch sein, dass dieser "status" innerhalb der Berechnung einfach als "volatile" deklariert werden muss. Ohne mehr Infos ist's schwer da genaueres zu sagen...
 

Andi_CH

Top Contributor
Kann ich nicht nachvollziehen. Wird bei dir
System.out.println("ENDE");
ausgeführt?

Grundsätzlich funktioniert der Code nämlich.

Java:
		int status2d = 0;
		while (true) {
			System.out.println(status2d);
			//System.out.println("Berechnungsstatus " + status2d);
			if (status2d != 0) {
				break;
			}
			status2d++;
		}
		System.out.println("ENDE " + status2d);
Output:
Code:
0
1
ENDE 1
 

Andi_CH

Top Contributor
nur wenn Zeile 7 - system.out.println wirklich einen Wert != 0 liefert muss der Thread doch terminieren, egal wie die Methode aussieht ???:L
 

ThreadPool

Bekanntes Mitglied
nur wenn Zeile 7 - system.out.println wirklich einen Wert != 0 liefert muss der Thread doch terminieren, egal wie die Methode aussieht ???:L

Tut er doch auch..., ist nur etwas unglücklich ausgedrückt. Der TO schreibt "Entferne ich den Kommentar ...", damit meint er er kommentiert die Codezeile ein, sprich er entfernt die Slashes.
 

Andi_CH

Top Contributor
Das habe ich schon so verstanden, nur schreibt er oben:

[ZITAT]
Lasse ich den Code so, wie gezeigt, wird die while-Schleife nicht mehr verlassen. Entferne ich den Kommentar bei System.out.println innerhalb der Schleife, sehe ich, wie der Staus irgendwann von 0 auf 1 springt und die Schleife sofort beendet wird. Wie kann das sein?
[/ZITAT]

Aber das würde ja heissen dass die sysout-Zeile das Verhalten des loops beeinflusst?
Wenn das aufgeklärt ist, ist es etwas für die Rätselecke ;-)
 
Zuletzt bearbeitet:

ThreadPool

Bekanntes Mitglied
Das habe ich schon so verstanden, nur schreibt er oben, dass der loop nicht verlassen wird, wenn die sysout-Zeile aktiviert ist ...

Aber das würde ja heissen dass die sysout-Zeile das Verhalten des loops beeinflusst?
Wenn das aufgeklärt ist, ist es etwas für die Rätselecke ;-)

Er schreibt das die while-Schleife nicht verlassen wird wenn die Ausgabe deaktiviert ist. Zitat: "Lasse ich den Code so, wie gezeigt...", und der Code wie gezeigt enthält die auskommentierte Ausgabe.

Ich zitiere mal Marco: "...eine Thread ist ja zu 100% damit ausgelatet, ständig den status abzufragen". Damit blockiert er IMHO auch prima den Rechenthread. Durch die Ausgabe wette ich das der Rechenthread abundzu mal ein wenig Zeit zugeteilt bekommt und es dann irgendwann mal schafft fertig zu sein. Ein derart aktives Warten ist eben nicht so der Burner...
 

Milo

Bekanntes Mitglied
Hallo,

ThreadPool hat es schon richtig erkannt. Es sieht so aus, als hätte das (nicht) vorhanden sein meiner Testausgabe einen Einfluß aus Ergebnis. Lasse ich keine Kontrollausgabe mitlaufen, wird die Schleife nie beendet. Grundsätzlich muss in der Schlefe nur irgendwas passieren. Es reicht hier zB auch einfache ein Thread.sleep(10) aufzurufen und schon wird irgendwann das Ende erreicht. Die Methode aaa2d.getCurrentEstimationStatus() liefert nur den Wert eines Integers zurück.

Java:
public void run() {
  this.adjust();
  System.out.println(this.getCurrentEstimationStatus()); // liefert 1
}

Die Methode wird beim Starten meines Threads aufgerufen. In der Methode adjust werden die Berechnungen ausgeführt und eine Statusvariable nach Ablauf der Berechnung geändert. Diese Statusvariable lasse ich dann mit getCurrentEstimationStatus() ausgeben.

Wie der Kommentar bereits andeutet, sehe ich auf der Konsole, hier eine 1 nach erfolgreicher Berechnung. Trotzdem wird die while-Schleife nicht verlassen als würde innerhalb dieser der Status nicht abgefragt werden. Die Ausgabe von System.out.println("ENDE"); erhalte ich also nicht.

Die Berechnung läuft auch fix durch. Ich kann mir hier Ausgaben machen auf der Konsole, die alle zeitnahe zu sehen sind. Die Schleife endet trotzdem nicht.

Zwei Sachen sind vielleicht noch wichtig(?) zu wissen. Den Berechnungsthread starte ich innerhalb eines anderen Threads. Den beschrieben Test habe ich nur in Eclipse durchgeführt - die Anwendung also nicht unabhängig mal über die Konsole gestartet.

Meine Lösung im Moment sieht so aus, dass ich der laufenden JProgressBar einfach mit setString() innerhalb der Schleife ein paar Werte übergebe zum Anzeigen.

Grundsätzlich könnte Marco aber recht haben, dass ich mich mal mit wait/notify beschäftigen sollte. Die Schleife ist ja nur da, um irgendwann das Ende zu haben und Anwender ein Ok oder Nicht-Ok zu liefern und dann die Daten zu speichern.

Gruß Micha
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Die Methode aaa2d.getCurrentEstimationStatus() liefert nur den Wert eines Integers zurück.
... der vermutich von einen anderen Thread auf einen Wert !=0 gesetzt, wird. Davon kriegt der while-Thread erstmal nicht unbedingt was mit. Mach den integer (zumindest für einen schnellen Test) mal "volatile" und schau ob's dann geht, wenn nicht, kann man ja nochmal schauen...
 

Milo

Bekanntes Mitglied
Hallo Marco,

ich habe folgendes gemacht:

Java:
volatile int currentEstimationStatus = BUSSY; // 0 als Startwert

die Methode, die diesen Wert zurückliefert, bleibt unverändert:

Java:
public int getCurrentEstimationStatus() {
  return this.currentEstimationStatus;
}

und wenn ich das gemacht habe, funktioniert es. Deine Vermutung ist also korrekt - nur, was heißt das jetzt?

Ein wenig mehr Code kann ich schon zeigen. Die Threads sind bei mir nur da, damit die Oberfläche nicht "steht". Die Berechnung erfolgt hier in der Methode adjust() (Zeile 76), wobei die eigentliche Rechnung in calculateApproximatedValues() (Zeile 99f) stattfindet, wo der Status ermittelt wird. Diesen Thread starte ich in einem Dialog-Fenster in der Methode startAdjustment() (Zeile 207). Wobei ich in Zeile 250 dort diese Ausgabe mache, damit in der Schleife etwas passiert. Lasse ich diese Zeile weg, lande ich bisher immer in einer Endlosschleife.

Hilft Dir bzw. Euch das weiter?

Gruß Micha

EDIT: Link korrigiert
 
Zuletzt bearbeitet:

FArt

Top Contributor
@Andi_CH
Du musst jetzt Marco13 anmeckern, dass er schon wieder bei dem gleichen Problem auf der Synchronisation herumreitet ;-)
 

Milo

Bekanntes Mitglied
Hi,

AutomatedApproximationAdjustment wie ist da getCurrentEstimationStatus() implementiert?

wie oben verlinkt und gezeigt. Es wird einfach nur der Staus übermittelt:

Java:
public int getCurrentEstimationStatus() {
  return this.currentEstimationStatus;
}

Die Variable wird nach der Berechnung in adjust() gesetzt:
Java:
public void adjust() {
  if (this.points != null && this.points.size() > 0) {
    List<PointBundle> systems = this.getBundles(this.points);
    if (this.targetSystem != null && (!this.isFreeNet || (this.isFreeNet && !this.estimateDatumPoints)))
      systems.add(this.targetSystem);
    this.currentEstimationStatus = this.calculateApproximatedValues(systems);
    systems = null;
  }
  else
    this.currentEstimationStatus = BundleTransformation.ERROR_FREE_ESTIMATION;
}

Gruß Micha
 

Marco13

Top Contributor
@Andi_CH
Du musst jetzt Marco13 anmeckern, dass er schon wieder bei dem gleichen Problem auf der Synchronisation herumreitet ;-)

Muss ich daran irgendwas verstehen, oder war das ein Flame der sich auf irgendeinen anderen Thread bezog? ???:L

@Milo: Es gibt da ... "diffizile Details" des Java Memory Modells... ich versuche i.a. auf solche Dinge zu umschiffen (wie angedeutet wäre in diesem Fall ein wait/notify ohnehin besser als dieses "busy waiting" :autsch: ) aber der Grund, weswegen ich auf das "volatile" getippt hatte, geht aus diesem Video hervor: JAX TV: Java-Programmierung im Multicore-Zeitalter - ist etwas länger, lohnt sich aber IMHO wirklich, sich das anzusehen.
 

Andi_CH

Top Contributor
Muss ich daran irgendwas verstehen, oder war das ein Flame der sich auf irgendeinen anderen Thread bezog? ???:L
Ich verstehs auch nicht - egal.

Ich hab den Hinweis auf die Auslastung echt übersehen - das solls geben.

Aber eine Frage zum Multithreading:
Ich habe nur einen Hinweis gefunden(hier) dass die Art des Schedulings nicht spezifiziert sei - aber gibt es Hinweise darauf?
Ist es wirklich non preemptive?
 

Milo

Bekanntes Mitglied
Hallo,

wie angedeutet wäre in diesem Fall ein wait/notify ohnehin besser als dieses "busy waiting"

Versuch 1 ;-)

Java:
synchronized(this) {
	if (aaa2d != null) {
		new Thread( aaa2d ).start();
	}
	if (aaa1d != null) {
		new Thread( aaa1d ).start();
	}
	if (aaa1d != null || aaa2d != null) {
		try {
			wait();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
					
	System.out.println("ENDE ERREICHT");
}

Ich starte in Abhängigkeit der Daten ggf. zwei Berechnungen gleichzeitig. Das Ende wird ja nun erreicht, wenn der erste fertig ist. Sollte auch eine zweite Rechnung noch laufen, wäre dies also zu früh. Welche Möglichkeit habe ich, auf den "letzten" Thread zu warten?

Gruß Micha
 

FArt

Top Contributor
Ich starte in Abhängigkeit der Daten ggf. zwei Berechnungen gleichzeitig. Das Ende wird ja nun erreicht, wenn der erste fertig ist. Sollte auch eine zweite Rechnung noch laufen, wäre dies also zu früh. Welche Möglichkeit habe ich, auf den "letzten" Thread zu warten?

Gruß Micha

Ist eigentlich das Producer-Consumer Problem.

Wenn mehrere Beteiligte einen Punkt abwarten sollen, ist eine Barriere das richtige: CyclicBarrier (Java 2 Platform SE 5.0)

Überhaupt empfehle ich nicht selber mit Threads rumzuklöppeln, wenn es u.U. besser geht. Für viele Probleme gibt es Lösungen im Package java.util.concurrent (Java 2 Platform SE 5.0)

Lesson: Concurrency (The Java™ Tutorials > Essential Classes)
 

Milo

Bekanntes Mitglied
... ich lege es mal in den Lesezeichen ab. Ich habe mich jetzt erstmal beholfen, indem ich die Threads nacheinander synchronisiert starte. Die while-Schleife ist somit erstmal weg.

Gruß Micha
 

Milo

Bekanntes Mitglied
Hallo,

um nun die Threads doch parallel zu starten, habe ich meine beiden Berechnungen nun in einer Map gespeichert. Satt notify() aufzurufen am Ende der jeweiligen Berechnung, teile ich meinem Dialog nur mit, das diese Berechnung beendet ist:

Java:
public void run() {
	try {
		System.out.println("START ADJUSTMENT");
		this.adjust();
		System.out.println("FINISHED ADJUSTMENT");
	} finally {
		if (this.syncObj != null)
			synchronized (this.syncObj) {
				if (this.syncObj instanceof AutomatedApproximationAdjustmentDialog) {
					((AutomatedApproximationAdjustmentDialog)this.syncObj).finished(this);
				}
				else
					this.syncObj.notify();
			}
	}
}

In der Dialog-Klasse prüfe ich nun, ob alle Threads beendet wurden, in dem die Map durchlaufe. Ist dies der Fall, rufe ich notify() auf.

Java:
	public void finished(AutomatedApproximationAdjustment autoApprox) {
		if (!this.autoApproxObjs.containsKey(autoApprox))
			return;
		this.autoApproxObjs.put(autoApprox, true);
		boolean isComplete = true;
		for (Boolean b : this.autoApproxObjs.values() ) {
			if (!b) {
				isComplete = false;
				break;
			}
		}
		if (isComplete)
			super.notify();
	}

Kann das irgendwie zu Problemen führen oder ist das okay so?

Gruß Micha
 

FArt

Top Contributor
notify macht nur mit wait Sinn...

Noch mal mein Hinweis auf das hervorragende Package java.util.concurrent

[EDIT]
und nur innerhalb von synchronized-Blöcken über den selben Monitor...
 
Zuletzt bearbeitet:

Milo

Bekanntes Mitglied
notify macht nur mit wait Sinn...

Der ist da und sieht fast unverändert aus wie hier gezeigt:

Java:
synchronized(this) {
	for (Thread t : aaaThreads) {
		t.start();
	}
	try {
		this.wait();
	} catch (InterruptedException e) {
		e.printStackTrace();
	}
}


Noch mal mein Hinweis auf das hervorragende Package java.util.concurrent
Das sieht im Moment auch nicht leichter aus als das andere. ;-)


Schöne Grüße
Micha
 

ThreadPool

Bekanntes Mitglied
Das sieht im Moment auch nicht leichter aus als das andere. ;-)


Nur, weil du nicht weisst wo du schauen musst. ;) FutureTask wäre z.B. was zum Nachschauen, davon könntest du erben und die protected done() - Methode überschreiben die ein Event wirft wenn der Task fertig ist. FutureTask erlaubt dir sogar auf eine sichere Art anzufragen ob ein Task schon fertig ist oder nicht...
 

FArt

Top Contributor
Nur, weil du nicht weisst wo du schauen musst. ;) FutureTask wäre z.B. was zum Nachschauen, davon könntest du erben und die protected done() - Methode überschreiben die ein Event wirft wenn der Task fertig ist. FutureTask erlaubt dir sogar auf eine sichere Art anzufragen ob ein Task schon fertig ist oder nicht...

Ich glaube das wäre gar nicht nötig. Es kommt jetzt auf das genaue Konzept an, aber "Aufträge in eine bestimmte Reihenfolge bringen" kann ich eben z.B. mit einer Queue oder ich lasse einzelne Aufträge vom ExecutorService ausführen und prüfe den Status über das Future. Unter Umständen eben auch die schon angesprochene Barriere... ich denke das könnte man einfach out-of-the-box so hier verwenden.

Ja, es sieht anders aus als man es gewohnt ist. Aber ja, das wurde gemacht um die Komplexität aus asynchroner Verarbeitung ein wenig zu mildern, und somit die Möglichkeit, Fehler zu machen (hoffentlich) zu verkleinern.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Projekte in IDE untereinander sharen / Probleme beim Build Java Basics - Anfänger-Themen 8
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
tom.j85 TicTacToe - probleme beim Casten Java Basics - Anfänger-Themen 6
D Probleme beim Kompelieren mache ich etwas falsch ? Java Basics - Anfänger-Themen 3
K Probleme beim Programm schreiben - Lesen von Dateiinhalten -zaehlen von Wörtern/ Buchstaben Java Basics - Anfänger-Themen 4
M Probleme beim aktualisieren eines JPanels Java Basics - Anfänger-Themen 7
J Probleme beim Array ausgeben Java Basics - Anfänger-Themen 4
M Probleme beim verwenden von Packages Java Basics - Anfänger-Themen 6
G Methoden Probleme beim Methodenaufruf Java Basics - Anfänger-Themen 2
M Array mit eigenem Datentyp probleme beim übergeben Java Basics - Anfänger-Themen 6
G Probleme beim casten von double zu int Java Basics - Anfänger-Themen 3
J Probleme beim schreiben von Dateien Java Basics - Anfänger-Themen 5
A Probleme beim zykl. aktulisieren von Daten in JTable Java Basics - Anfänger-Themen 3
M Erste Schritte Probleme beim Verknüpfen von Methoden Java Basics - Anfänger-Themen 15
A Probleme beim Methodenaufruf von Object[] ! Java Basics - Anfänger-Themen 12
A Probleme beim Methodenaufruf von char[] ! Java Basics - Anfänger-Themen 10
D JTable Probleme beim Sortieren von Zahlen. Java Basics - Anfänger-Themen 6
M OOP Probleme beim Funktionsaufruf, Java OpenCV Java Basics - Anfänger-Themen 0
X Probleme beim rekursiven Durchsuchen von Verzeichnissen Java Basics - Anfänger-Themen 1
B Probleme beim einlesen einer short variablen für einen Array Java Basics - Anfänger-Themen 1
A LinkedList: Probleme beim Auslesen Java Basics - Anfänger-Themen 2
F Probleme beim Übersetzen Java Basics - Anfänger-Themen 7
O Probleme beim import von Projekten in Eclipse Java Basics - Anfänger-Themen 7
C OOP Probleme beim Addieren von Arrays Java Basics - Anfänger-Themen 4
N Probleme beim entfernen eines JPanels Java Basics - Anfänger-Themen 4
J Probleme beim JRadioButton Java Basics - Anfänger-Themen 2
S Klasse properties - Probleme beim umwandeln Java Basics - Anfänger-Themen 3
M Input/Output Probleme beim Parsen von CSV und TXT Dateien Java Basics - Anfänger-Themen 7
C Probleme beim Array Java Basics - Anfänger-Themen 6
G Probleme beim HTML auslesen Java Basics - Anfänger-Themen 6
N Probleme beim Rechnen mit Integer und double Java Basics - Anfänger-Themen 4
T Probleme beim casten Java Basics - Anfänger-Themen 9
C Input/Output Probleme beim .jar erstellen Java Basics - Anfänger-Themen 5
M Klassen Probleme beim Debuggen - Datentypkonvertierung - Speichern in Datei Java Basics - Anfänger-Themen 7
W Probleme beim Wiedereinstieg Java Basics - Anfänger-Themen 25
P Interpreter-Fehler Probleme beim Ausführen einer Jar Datei Java Basics - Anfänger-Themen 2
F MVC -> Probleme beim Controller Java Basics - Anfänger-Themen 6
0 Log4J Probleme beim einlesen der Log datei Java Basics - Anfänger-Themen 2
F Probleme beim umwandeln von String in Int Java Basics - Anfänger-Themen 10
M Kontaktbuch - Probleme beim Input Java Basics - Anfänger-Themen 3
H Probleme beim erzeugen einer Headerdatei mit javah Java Basics - Anfänger-Themen 3
T Interpreter-Fehler Probleme beim .jar ausführen mit JRE 64bit Java Basics - Anfänger-Themen 9
A Probleme beim erstellen einer lauffähigen jar Java Basics - Anfänger-Themen 3
A Probleme beim IntervallCheck Java Basics - Anfänger-Themen 4
M Probleme beim Aufruf von Listener in anderer Klasse Java Basics - Anfänger-Themen 9
R Probleme mit NullPointer beim Mp3 abspielen (JMF) Java Basics - Anfänger-Themen 21
I Probleme beim Laden einer .gif-Datei. Java Basics - Anfänger-Themen 8
I Probleme beim Laden eins BufferedImage Java Basics - Anfänger-Themen 8
Sebi Probleme beim Kompilieren Java Basics - Anfänger-Themen 11
I Probleme beim adden von Elementen in einer ArrayList Java Basics - Anfänger-Themen 10
C Probleme beim casten und Objekt zugriff Java Basics - Anfänger-Themen 12
L Probleme beim Ausführen des Programms Java Basics - Anfänger-Themen 9
N Probleme beim abfangen von fehlern Java Basics - Anfänger-Themen 4
B kleine Probleme beim auslesen einer m3u Datei Java Basics - Anfänger-Themen 3
S Probleme beim Umwandeln von Long nach Int Java Basics - Anfänger-Themen 4
G Probleme beim Zufügen eines JLabels Java Basics - Anfänger-Themen 18
M Probleme beim Jar erstellen Java Basics - Anfänger-Themen 7
M Probleme beim Objekzugriff auf andere Klasse: NullPointerExc Java Basics - Anfänger-Themen 5
I Probleme beim Einrichten von Java (PATH-Veriable) Java Basics - Anfänger-Themen 4
A Memory Probleme beim Laden von thumbnails Java Basics - Anfänger-Themen 3
G Probleme beim Login (Webservice) Java Basics - Anfänger-Themen 4
B Probleme beim Kompilieren. Java Basics - Anfänger-Themen 12
M probleme beim parsen Java Basics - Anfänger-Themen 7
R Probleme beim Repaint Java Basics - Anfänger-Themen 3
M probleme beim applet einbinden Java Basics - Anfänger-Themen 7
L beim ersten compilen schon erste probleme Java Basics - Anfänger-Themen 8
R Probleme beim umwandeln eines String zu einem Int Wert Java Basics - Anfänger-Themen 3
M Probleme beim Datei auslesen Java Basics - Anfänger-Themen 6
M Probleme beim Compileren Java Basics - Anfänger-Themen 29
I Probleme beim ausführen des Programms Java Basics - Anfänger-Themen 6
kulturfenster Probleme beim Erstellen von Objekten Java Basics - Anfänger-Themen 15
kulturfenster Probleme beim Zeichnen einer Geraden Java Basics - Anfänger-Themen 8
S Probleme beim Java Kompilieren + ausführen Java Basics - Anfänger-Themen 6
M probleme beim kompilieren / übersetzen ! Systemeinstellung ? Java Basics - Anfänger-Themen 5
I Probleme beim Ausführen von Anwendungen Java Basics - Anfänger-Themen 2
S Probleme mit Datentyp beim Einlesen Java Basics - Anfänger-Themen 4
I java - probleme beim complimieren Java Basics - Anfänger-Themen 4
L Probleme beim ersten JavaProgramm! Java Basics - Anfänger-Themen 4
P Probleme beim Exportieren einer jar datei Java Basics - Anfänger-Themen 8
M Probleme beim Strich(e) zwichen Java Basics - Anfänger-Themen 3
M Probleme beim Drucken Java Basics - Anfänger-Themen 4
M Probleme beim Zuweisen eines Arbeitsverzeichnis Java Basics - Anfänger-Themen 2
A Probleme beim char-Vergleich! Java Basics - Anfänger-Themen 9
G Probleme beim Compilieren Java Basics - Anfänger-Themen 6
J Probleme beim Vererben Java Basics - Anfänger-Themen 2
B Probleme beim Dateien auslesen Java Basics - Anfänger-Themen 12
C Probleme beim overloaden. Java Basics - Anfänger-Themen 2
W MouseListener Probleme beim Abfangen Java Basics - Anfänger-Themen 8
X probleme beim import Java Basics - Anfänger-Themen 3
S Probleme beim Füllen einer HashMap Java Basics - Anfänger-Themen 15
K Probleme beim Einstieg Java Basics - Anfänger-Themen 2
I Probleme beim Ansprechen eines Arrays Java Basics - Anfänger-Themen 12
T Probleme beim Einlesen eines Strings Java Basics - Anfänger-Themen 3
K Neuronales Netz in Java und Probleme beim Konfigurieren Java Basics - Anfänger-Themen 2
N Probleme beim generieren von Objekten Java Basics - Anfänger-Themen 2
G Unknown Source Probleme beim Starten des Prgramms Java Basics - Anfänger-Themen 2
J probleme beim wieder aufruf Java Basics - Anfänger-Themen 2
J Probleme beim Erstellen eines Programms Java Basics - Anfänger-Themen 5
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben