Liebe Leute,
ich habe mir schon ein paar Sachen über Threads (inkl. synchronized, wait und notify) durchgelesen und habe dann versucht, es an einem Minimalbeispiel nachzuvollziehen. Leider bin ich wohl zu blöd... ???:L Kann mir vielleicht jemand sagen, wie ich das folgende Code-Beispiel so abändern kann, dass thread2 von thread1 benachrichtigt wird, nachdem letzterer seine Nachricht ausgegeben hat? Zeitlich gesehen soll zuerst "thread2 - Teil 1", dann "thread1" und zuletzt "thread2 - Teil 2" ausgegeben werden. Übrigens weiß ich, dass hierfür eigentlich keine Threads gebraucht werden, aber es soll nur ein Minimalbeispiel sein, an dem ich es nachvollziehen möchte.
Und dabei kommt folgende Ausgabe raus:
ich habe mir schon ein paar Sachen über Threads (inkl. synchronized, wait und notify) durchgelesen und habe dann versucht, es an einem Minimalbeispiel nachzuvollziehen. Leider bin ich wohl zu blöd... ???:L Kann mir vielleicht jemand sagen, wie ich das folgende Code-Beispiel so abändern kann, dass thread2 von thread1 benachrichtigt wird, nachdem letzterer seine Nachricht ausgegeben hat? Zeitlich gesehen soll zuerst "thread2 - Teil 1", dann "thread1" und zuletzt "thread2 - Teil 2" ausgegeben werden. Übrigens weiß ich, dass hierfür eigentlich keine Threads gebraucht werden, aber es soll nur ein Minimalbeispiel sein, an dem ich es nachvollziehen möchte.
Code:
import java.io.*;
public class file2 {
public file2() {
thread2 t2 = new thread2();
t2.start();
thread1 t1 = new thread1();
t1.start();
}
class thread1 extends Thread {
public void run() {
method1();
}
public synchronized void method1() {
System.out.println("thread1");
notify();
}
}
class thread2 extends Thread {
public void run() {
method2();
}
public synchronized void method2() {
System.out.println("thread2 - Teil 1");
try{
wait();
}
catch (InterruptedException e) {
}
System.out.println("thread2 - Teil 2");
}
}
}
Und dabei kommt folgende Ausgabe raus:
thread2 - Teil 1
thread1