tomassio Geschrieben 2. November 2009 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 2. November 2009 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.