Benutzer-Werkzeuge

Webseiten-Werkzeuge


parallelism:producerconsumer:aufgabe1loesung:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
parallelism:producerconsumer:aufgabe1loesung:start [2025/01/03 14:38] – angelegt Martin Pabstparallelism:producerconsumer:aufgabe1loesung:start [2025/04/21 06:16] (aktuell) Martin Pabst
Zeile 4: Zeile 4:
  
 <script type="text/plain" title="PassiveWaitingSPC.java"> <script type="text/plain" title="PassiveWaitingSPC.java">
-Tresen1 t = new Tresen1();+Tresen t = new Tresen(1);
 for (int i = 0; i < 5; i++) { for (int i = 0; i < 5; i++) {
-   new Bob1(t, 100, "Bob " + i).start(); +   new Bob(t, 100, "Bob " + i).start(); 
-   new Lisa1(t, "Lisa " + i).start(); +   new Lisa(t, "Lisa " + i).start(); 
 } }
  
  
  
-class Bob1 extends Thread { +class Bob extends Thread { 
-   Tresen1 tresen;+   Tresen tresen;
    int anzahlPizzenTodo;    int anzahlPizzenTodo;
    int lastTimePizzaBaked = System.currentTimeMillis();    int lastTimePizzaBaked = System.currentTimeMillis();
  
        
-   Bob1(Tresen1 tresen, int anzahlPizzenTodo, String name) {+   Bob(Tresen tresen, int anzahlPizzenTodo, String name) {
       super(name);       super(name);
       this.tresen = tresen;       this.tresen = tresen;
Zeile 35: Zeile 35:
          int timeSinceLastPizzaBaked = System.currentTimeMillis() - lastTimePizzaBaked;          int timeSinceLastPizzaBaked = System.currentTimeMillis() - lastTimePizzaBaked;
          if(timeSinceLastPizzaBaked < timeToBakeNextPizza) {          if(timeSinceLastPizzaBaked < timeToBakeNextPizza) {
-            SystemTools.pause(timeToBakeNextPizza - timeSinceLastPizzaBaked);+            Thread.sleep(timeToBakeNextPizza - timeSinceLastPizzaBaked);
             lastTimePizzaBaked = System.currentTimeMillis();             lastTimePizzaBaked = System.currentTimeMillis();
          }          }
Zeile 46: Zeile 46:
 } }
  
-class Lisa1 extends Thread { +class Lisa extends Thread { 
-   Tresen1 tresen;+   Tresen tresen;
    int anzahlPizzenServiert = 0;    int anzahlPizzenServiert = 0;
  
-   Lisa1(Tresen1 tresen, String name) {+   Lisa(Tresen tresen, String name) {
       super(name);       super(name);
       this.tresen = tresen;       this.tresen = tresen;
Zeile 63: Zeile 63:
          }          }
          // Lisa bringt jetzt die Pizza zu den Kunden:          // Lisa bringt jetzt die Pizza zu den Kunden:
-         SystemTools.pause(Random.randint(10, 100)); +         Thread.sleep(Random.randint(10, 100)); 
       }       }
    }    }
Zeile 69: Zeile 69:
 } }
  
-class Tresen1 {+class Tresen {
        
    int anzahlPizzen = 0;    int anzahlPizzen = 0;
 +   int kapazität;
 +
 +   public Tresen(int kapazität) {
 +      this.kapazität = kapazität;
 +   }
  
    synchronized void legPizzaDrauf() {    synchronized void legPizzaDrauf() {
-      while (anzahlPizzen == 1) {+      while (anzahlPizzen == kapazität) {
          wait();                 // aktueller Thread geht in den Wartezustand und blockiert          wait();                 // aktueller Thread geht in den Wartezustand und blockiert
       }       }
-      anzahlPizzen = 1;+      anzahlPizzen++;
       notifyAll();                  // beliebigen Thread aus dem Wartezustand "aufwecken"       notifyAll();                  // beliebigen Thread aus dem Wartezustand "aufwecken"
    }    }
Zeile 85: Zeile 90:
          wait();                 // aktueller Thread geht in den Wartezustand und blockiert          wait();                 // aktueller Thread geht in den Wartezustand und blockiert
       }       }
-      anzahlPizzen = 0;+      anzahlPizzen--;
       notifyAll();                  // beliebigen Thread aus dem Wartezustand "aufwecken"       notifyAll();                  // beliebigen Thread aus dem Wartezustand "aufwecken"
    }    }
parallelism/producerconsumer/aufgabe1loesung/start.1735915110.txt.gz · Zuletzt geändert: 2025/01/03 14:38 von Martin Pabst

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki