tomassio Geschrieben 2. November 2009 Geschrieben 2. November 2009 Hallo Wie kann ich bei folgende Code ein Deadlock vermeiden. erstens mit Semaphor und zweitens mit wait und notify. class X { private X otherX; private boolean inUse = false; public void setPartner(X otherX) { this.otherX = otherX; } public synchronized void m1() { System.out.println("It's method m1"); while (inUse) try { otherX.m2(); wait(); } catch (InterruptedException e) { /* ... */ }; inUse = true; } public synchronized void m2() { // OK System.out.println("It's method m2"); inUse = false; notify(); } } public class UserofX extends Thread { private X myX; public UserofX(X x) { myX = x; } public void run() { for (int i = 0; i < 10000; i++) myX.m1(); } public static void main(String[] args) { X x1 = new X(); X x2 = new X(); x1.setPartner(x2); x2.setPartner(x1); UserofX user1 = new UserofX(x1); user1.start(); UserofX user2 = new UserofX(x2); user2.start(); } } Gruss Tomas
flashpixx Geschrieben 2. November 2009 Geschrieben 2. November 2009 Wo ist die Frage? Benutze bitte Code-Tags! Schaue Dir auch bitte einmal genau an, wie man Thread initialisiert: Java ist auch eine Insel – 9.2 Threads erzeugen
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden