Das zeigt ein einfaches Beispiel für deadlock mit Semaphoren

Ich bin derzeit die Betriebssysteme und unser Lehrer zugewiesen, dieses problem für unser Labor, aber er ist nicht sehr hilfreich. Also ich muss ein basic-Beispiel von deadlock mit Semaphoren und meine Ausgabe muss nachweisen, dass das auftreten von Deadlocks. Ich nehme an, er meint, wenn meine Ausnahme gefangen wird. Dies ist so nah wie ich bekommen habe.

import java.util.concurrent.Semaphore;
public class deadlockTest2
{
    private Semaphore sem1=new Semaphore(1);
    private Semaphore sem2=new Semaphore(1);
    private int num;

    public deadlockTest2(int random)
    {
            num=random;
    }
    public void run()
    {
        try 
        {
            sem1.acquire();
        }
         catch (InterruptedException e)
        {
            System.out.println("I am deadlocked");}
        }

    public static void main(String[] args)
    {
        deadlockTest2 tester=new deadlockTest2(5);
        deadlockTest2 tester2=new deadlockTest2(20);
        tester.run();
        tester2.run();
    }   
}

~

~

Bin ich noch in der Nähe? Ich lese material, aber noch nicht vollständig greifen. Ich glaube, ich verstehe nicht, was ein Prozess ist. Bitte jemand helfen.

  • Sie müssen zuerst verstehen, was ein deadlock ist. Eine InterruptedException geworfen wird, ist kein deadlock. Haben Sie googeln für "Java deadlock"? Wenn Sie hatten, würden Sie bekommen Erklärungen und Beispiele.
  • Ist ein deadlock, wenn Prozess 2 versucht auf Daten zuzugreifen, dass Prozess 1 nicht freigegeben hat. Gleichzeitig, Prozess-1 versucht, den Zugriff auf Daten, Prozess 2 nicht freigegeben hat. Ist das richtig? Ich verstehe einfach nicht, wie man einen Prozess, um zu versuchen, auf die Daten zugreifen.
InformationsquelleAutor user3736114 | 2014-06-16
Schreibe einen Kommentar