Threads - wo gehören sie hin?

MasseElch

Aktives Mitglied
Hallo Forum,

ich bin gerade dabei mich ein wenig mit Threads zu beschäftigen.

Da bin ich (wie leider ziemlich oft) auf viele Meinungen gestoßen.

Erstellt man nun eine neue Klasse für einen Thread oder erzeugt man einfach innerhalb einer Methode einen neuen Thread?

Ich hab mich für die zweite Variante entschieden. Möchte ja nun aber auch sauber coden. Darum:

Wie macht man es denn nun?

Ich habs so gelöst:

Java:
public void counter() throws IOException, InterruptedException {
		Thread moveImg = new Thread() {
			public void run() {
				try {
					while (this.running) {
						Thread.sleep(8L);
						this.images.moveImages();
						this.repaint();
					}
				}
				catch (InterruptedException | IOException ex) {
					//TODO - ExceptionHandling
				}
			}
		};
		movImg.start();
	}

Lg
MasseElch
 
Zuletzt bearbeitet:
Theoretisch gibt es da kein sauber oder unsauber, es kommt eben drauf an ob du nicht evtl. die Funktionalitöt an einer anderen Stelle ebenfalls benötigst, dann hättest du mit deiner Lösung unnötig Codeduplizierung.
Aber deine Lösungsvorschläge sind vermutlich generell schlecht, denn du erweiterst direkt die Thread-Klasse, das sollte man nicht tun wenn man eigentlich nur die run Methode überschreiben möchte und keine "neuen Funktionalitäten" in die Thread-Klasse einbringt. Für die run-Methode gibt es extra das Interface Runnable, auch in deren API Doc steht folgendes dazu:

In addition, Runnable provides the means for a class to be active while not subclassing Thread. A class that implements Runnable can run without subclassing Thread by instantiating a Thread instance and passing itself in as the target. In most cases, the Runnable interface should be used if you are only planning to override the run() method and no other Thread methods. This is important because classes should not be subclassed unless the programmer intends on modifying or enhancing the fundamental behavior of the class.

Deine Frage wäre also eig: Soll ich eine extra Klasse erstellen die Runnable implementiert? (die Antwort oben passt dann trotzdem wieder 😀)
 
Theoretisch gibt es da kein sauber oder unsauber, es kommt eben drauf an ob du nicht evtl. die Funktionalitöt an einer anderen Stelle ebenfalls benötigst, dann hättest du mit deiner Lösung unnötig Codeduplizierung.
Aber deine Lösungsvorschläge sind vermutlich generell schlecht, denn du erweiterst direkt die Thread-Klasse, das sollte man nicht tun wenn man eigentlich nur die run Methode überschreiben möchte und keine "neuen Funktionalitäten" in die Thread-Klasse einbringt. Für die run-Methode gibt es extra das Interface Runnable, auch in deren API Doc steht folgendes dazu:



Deine Frage wäre also eig: Soll ich eine extra Klasse erstellen die Runnable implementiert? (die Antwort oben passt dann trotzdem wieder 😀)

Perfekt! 🙂

Gar nicht erst Thread erweitern sondern Runnable implementieren und damit einen Thread erzeugen - das dürfte in deinem Fall die einzig saubere Lösung sein.
 
Java:
class MoveImage implements Runnable {
			public void run() {
				try {
					while (GUI.this.running) {
						Thread.sleep(8L);
						this.images.moveImages();
						this.repaint();
					}
				}
				catch (InterruptedException ex) {
					//TODO - ExceptionHandling
				}
			}
		};
		movImg = new Thread(MoveImage());
                movImg.start();
	}

Habs nun so. Ist es dies, was ihr meintet?
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben