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.
ich muss diese Aufgabe lösen nur weiß ich nicht ganz ob ich es jetzt richtig habe.
Die dort genannten booleschen Werte habe ich dann selber gewählt, ich denke das war auch so gemeint. Somit ist x true, y false
Was ich dazu auch nicht ganz verstehe ist dieser Satz "Die Booleschen Variablen x und y müssen im dazugehörigen Thread angelegt"
Wie ist es gemeint, könnte mir jemand ein Beispiel geben?
Ist meine Lösung halbwegs korrekt ?
Meine Lösung dazu:
// Main Class
Java:
package ÜB3;
public class Main {
public static void main(String[] args) {
ThreadTest y = new ThreadTest();
Thread x = new Thread(y);
x.start();
}
}
// Thread Class
Java:
package ÜB3;
public class ThreadTest implements Runnable{
static boolean x = true;
static boolean y = false;
public void run() {
A();
B();
C();
}
public static void A(){
System.out.println("A");
D();
}
public static void B(){
System.out.println("B");
E();
}
public static void C(){
System.out.println("C");
F();
}
public static void D(){
System.out.println("D");
}
public static void E(){
System.out.println("E");
G();
H();
}
public static void F(){
System.out.println("F");
}
public static void G(){
if(x == true){
System.out.println("G");
}
}
public static void H(){
if(y == true){
System.out.println("H");
}
}
}
// Ausgabe
Java:
A
D
B
E
G
C
F
Was mir dabei auffällt ist, dass es gar nicht nebenläufig ausgegeben wird, sondern genau wie auf dem Bild ausgegeben wird.
Bei dir laufen auch alle Methoden in einem Thread. Du solltest jedoch jede Methode in einen eigenen Thread unterbringen. Sobald du das hast, wird dir auch klar, was mit x und y gemeint ist.
Btw: Pass doch die Ausgabe so an, dass der aktuelle Name des Threads ausgegeben wird (Thread.getCurrent().getName() ). Damit wird vielleicht das Verständnis für die Aufgabe auch besser.
Bei dir laufen auch alle Methoden in einem Thread. Du solltest jedoch jede Methode in einen eigenen Thread unterbringen. Sobald du das hast, wird dir auch klar, was mit x und y gemeint ist.
Btw: Pass doch die Ausgabe so an, dass der aktuelle Name des Threads ausgegeben wird (Thread.getCurrent().getName() ). Damit wird vielleicht das Verständnis für die Aufgabe auch besser.
Du kannst auch alles in einer Klasse lassen (so lautet ja die Aufgabenstellung?). Mittels des Runnable-Interfaces kannst du ja gezielt die eine oder andere Methode aufrufen.
Du kannst auch alles in einer Klasse lassen (so lautet ja die Aufgabenstellung?). Mittels des Runnable-Interfaces kannst du ja gezielt die eine oder andere Methode aufrufen.
Ich verstehe nicht ganz was du meinst, könntest du vllt ein kleines Beispiel machen.
BTW: Derzeitig benutzten wir die Vererbung Thread und nicht die Runnable (das ganze habe ich nur getestet.)
Ich habe das ganze jetzt mal so geschrieben.
Deine Methode: Thread.getCurrent().getName(), hat leider nicht funktioniert, deswegen habe ich es einfach selber ausgegeben und zusätzlich noch der Thread so das ich sehen kann das es von anderen Threads durchlaufen wird.
Java:
package ÜB3;
public class Main {
public static void main(String[] args) {
ThreadA a = new ThreadA();
Thread x = new Thread(a);
x.start();
ThreadB b = new ThreadB();
Thread x1 = new Thread(b);
x1.start();
ThreadC c = new ThreadC();
Thread x2 = new Thread(c);
x2.start();
}
Java:
package ÜB3;
public class ThreadA extends Thread{
public void run() {
A();
}
public static void A(){
System.out.println(Thread.currentThread().getName() + " A()");
D();
}
public static void D(){
System.out.println(Thread.currentThread().getName() + " D()");
}
}
Java:
package ÜB3;
public class ThreadB extends Thread{
static boolean x = true;
static boolean y = false;
public void run() {
B();
}
public static void B(){
System.out.println(Thread.currentThread().getName() + " B()");
E();
}
public static void E(){
System.out.println(Thread.currentThread().getName() + " E()");
G();
H();
}
public static void G(){
if(x == true){
System.out.println(Thread.currentThread().getName() + " G()");
}
}
public static void H(){
if(y == true){
System.out.println(Thread.currentThread().getName() + " H");
}
}
}
Java:
package ÜB3;
public class ThreadC extends Thread {
public void run(){
C();
}
public static void C(){
System.out.println(Thread.currentThread().getName() + " C()");
F();
}
public static void F(){
System.out.println(Thread.currentThread().getName() + " F()");
}
}
Vorher lief alles auf einem Thread jetzt läuft es auf 3 verschiedene so wie es gewollt wird.
Ausgabe: