Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo, in meiner Weiterbildung dreht es sich momentan viel um Thredhandling und semaphoren,
habe soweit das Prinzip verstanden, allerdings haben wir in den Übungen oft den falls das wir
in der klasse ein extend threads machen, könnte mir jemand zeigen wie es aussehen würde wenn ich
mit einem implements runnable arbeiten müsste ?
Ja, Roboter muss Runnable implementieren. Und was den Rest betrifft: im Grundsatz ja, aber natürlich wirst Du da ein wenig anpassen müssen. Schau mal, ob Du es hinbekommst.
Ja, Roboter muss Runnable implementieren. Und was den Rest betrifft: im Grundsatz ja, aber natürlich wirst Du da ein wenig anpassen müssen. Schau mal, ob Du es hinbekommst.
irgentwie klappt das nicht, kann ich die sleep methode z.b. dann nicht mehr so benutzen ?
Im normalfall benutzen wir schulisch die Extend methode momentan, habe aber etwas angst falls in der Prüfung morgen doch
der andere Fall dran kommt
Das kann man pauschal nicht sagen. Im Prinzip brauchst Du nicht einmal ein Array, weil Du ja nichts mehr damit machst. Es kann also sinnvoll sein, die Threads in einem Array abzulegen, es kann sinnvoll sein, die Roboter in einem Array abzulegen, es kann sinnvoll sein, sich beides zu merken usw.
Das
Java:
for (int i = 0; i < anzahl; i++) {
new Thread(new Roboter(sem,i)).start();
}
würde genauso funktionieren.
Wenn Du allerdings z. B. auf die Beendigung warten möchtest, macht es Sinn, sich die erzeugten Threads zu merken:
Java:
Thread[] threads = new Thread[anzahl];
for (int i = 0; i < threads.length; i++) {
threads[i] = new Thread(new Roboter(sem,i));
threads[i].start();
}
for (Thread thread : threads) {
thread.join();
}
Und wenn Du dann noch Informationen vom Roboter haben willst, solltest Du Dir diese natürlich auch merken:
Java:
Thread[] threads = new Thread[anzahl];
Roboter[] robots = new Roboter[anzahl];
for (int i = 0; i < threads.length; i++) {
robots[i] = new Roboter(sem, i);
threads[i] = new Thread(robots[i]);
threads[i].start();
}
for (int i = 0; i < threads.length; i++) {
threads[i].join();
System.out.println("Roboter " + robots[i].getName() + " ist fertig.");
}
Das kann man pauschal nicht sagen. Im Prinzip brauchst Du nicht einmal ein Array, weil Du ja nichts mehr damit machst. Es kann also sinnvoll sein, die Threads in einem Array abzulegen, es kann sinnvoll sein, die Roboter in einem Array abzulegen, es kann sinnvoll sein, sich beides zu merken usw.
Das
Java:
for (int i = 0; i < anzahl; i++) {
new Thread(new Roboter(sem,i)).start();
}
würde genauso funktionieren.
Wenn Du allerdings z. B. auf die Beendigung warten möchtest, macht es Sinn, sich die erzeugten Threads zu merken:
Java:
Thread[] threads = new Thread[anzahl];
for (int i = 0; i < threads.length; i++) {
threads[i] = new Thread(new Roboter(sem,i));
threads[i].start();
}
for (Thread thread : threads) {
thread.join();
}
Und wenn Du dann noch Informationen vom Roboter haben willst, solltest Du Dir diese natürlich auch merken:
Java:
Thread[] threads = new Thread[anzahl];
Roboter[] robots = new Roboter[anzahl];
for (int i = 0; i < threads.length; i++) {
robots[i] = new Roboter(sem, i);
threads[i] = new Thread(robots[i]);
threads[i].start();
}
for (int i = 0; i < threads.length; i++) {
threads[i].join();
System.out.println("Roboter " + robots[i].getName() + " ist fertig.");
}