Statt Thread als Superklasse Runnable

Salut, also ich habe hier ne kleine Aufgabe und steh grad aufm Schlauch, wäre lieb wenn mir jemand weiterhelfen könnte, also hier mal die Aufgabe: Das nachfolgende Programm soll unter Verwendung der Schnittstelle „Runnable“ so modifiziert werden, dass die Klasse „CounterDecThread“ die Klasse Thread nicht mehr als Superklasse nutzt und es sollte dann möglich sein, „CounterDecThread“ von einer anderen Superklasse z.B. „JFrame“ abzuleiten.
Hier der Code:
class BoundedCounter
{
static final long LOWERBOUND = 7;
private long number = 10;

public synchronized void inc() throws InterruptedException
{
number = number + 1;
notifyAll();
System.out.println(number);
}

public synchronized void dec() throws InterruptedException
{
while(number == LOWERBOUND) wait();
number = number - 1;
System.out.println(number);
}
}

public class BoundedCounterTest
{
private BoundedCounter c = null;

public BoundedCounterTest()
{
c = new BoundedCounter();
CounterIncThread cit = new CounterIncThread();
CounterDecThread cdt = new CounterDecThread();
cit.setPriority(1);
cdt.setPriority(10);
cit.start();
cdt.start();

try
{
cit.join();
cdt.join();
}

catch(InterruptedException e)
{}
}

public static void main(String argv[]) throws java.io.IOException
{
new BoundedCounterTest();
System.in.read();
}

public class CounterDecThread extends Thread
{
public CounterDecThread()
{}

public void run()
{
for(int k = 0; k

Hallo,

du musst nur statt von Thread abzuleiten, Runnable implementieren und einen neuen Thread erzeugen dem du eine Referenz zu deiner Klasse übergibst, dafür musst du nur diese zwei Zeilen ändern:

CounterDecThread cdt = new CounterDecThread();
...
public class CounterDecThread extends Thread

und zwar nach:

CounterDecThread cdt = new Thread(new CounterDecThread());
...
public class CounterDecThread implements Runnable

Jetzt kannst du CounterDecThread auch noch von was anderem ableiten (extends JFrame)

Grüße
Bruno

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

du musst nur statt von Thread abzuleiten, Runnable
implementieren und einen neuen Thread erzeugen dem du eine
Referenz zu deiner Klasse übergibst, dafür musst du nur diese
zwei Zeilen ändern:

CounterDecThread cdt = new CounterDecThread();

public class CounterDecThread extends Thread

und zwar nach:

CounterDecThread cdt = new Thread(new CounterDecThread());

public class CounterDecThread implements Runnable

Jetzt kannst du CounterDecThread auch noch von was anderem
ableiten (extends JFrame)

Grüße
Bruno

Hallo Bruno,
Merci für die schnelle Hilfe, habs grad laufen lassen und jetzt kennt er aber die Thread-Methoden wie start(), etc. nicht mehr, außerdem meint er zu
„CounterDecThread cdt = new Thread(new CounterDecThread());“
sie wären nicht kompatibel. Krise!!! Merci nochmal
Grüßli

„CounterDecThread cdt = new Thread(new CounterDecThread());“

Sorry, mein Fehler. Du musst schreiben

Thread cdt = cdt = new Thread(new CounterDecThread());

dann kennt er auch wieder die Methoden

Grüße
Bruno

Salut Bruno,
10000000000 Mercis es läuft, aber so ne Anweisung hab ich ja noch nie gesehen … = … = …, wie soll ich denn da drauf kommen, aber egal, Merci und schönen Abend noch

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Moin

aber so ne Anweisung hab ich ja
noch nie gesehen … = … = …, wie soll ich denn da drauf
kommen

Das mit 2x = geht zwar, ist aber unnötig. 1x = reicht in dem Fall vollkommen.

cu

10000000000 Mercis es läuft, aber so ne Anweisung hab ich ja
noch nie gesehen … = … = …, wie soll ich denn da drauf
kommen, aber egal, Merci und schönen Abend noch

Das war auch ein Copy&amp:stuck_out_tongue_winking_eye:aste-Fehler von mir, eigentlich wollte ich es nur einmal schreiben :smile:

Grüße
Bruno