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 Zitieren
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 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.