Class Semaphore


  • public class Semaphore
    extends java.lang.Object
    Diese Klasse implementiert ein Semaphor, das zur Synchronisation von Threads verwendet werden kann.
    • Constructor Summary

      Constructors 
      Constructor Description
      Semaphore​(int permits)
      Einen Semaphor erzeugen, der permit viele acquire Zugriffe zuläßt, bis er jeden weiteren Thread, der acquire aufruft, mit wait "schlafen" legt.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void acquire()
      Eine Sperre des Semaphores anfordern, sind keine Sperren mehr zu vergeben, dann wird der Thread mit wait() angehalten.
      void release()
      Eine Sperre des Semaphores freigeben, dies befreit andere Threads, die auf eine Sperre warten.
      void setUpperBoundPermit​(int upperBoundPermit)
      Diese Methode setzt die Anzahl der Sperren neu.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • Semaphore

        public Semaphore​(int permits)
        Einen Semaphor erzeugen, der permit viele acquire Zugriffe zuläßt, bis er jeden weiteren Thread, der acquire aufruft, mit wait "schlafen" legt.
        Parameters:
        permits - Wie viele Threads dürfen in den kritischen Abschnitt
    • Method Detail

      • acquire

        public void acquire()
        Eine Sperre des Semaphores anfordern, sind keine Sperren mehr zu vergeben, dann wird der Thread mit wait() angehalten. Ein anderer Thread, der seine Sperre wieder aufgibt, kann den wartenden Thread wieder befreien.
      • release

        public void release()
        Eine Sperre des Semaphores freigeben, dies befreit andere Threads, die auf eine Sperre warten.
      • setUpperBoundPermit

        public void setUpperBoundPermit​(int upperBoundPermit)
        Diese Methode setzt die Anzahl der Sperren neu. Es ist somit zur Laufzeit möglich, dem Semaphor neue Sperren zu geben (entweder Sperren entziehen oder neue Sperren freischalten). Gibt es neue Sperren, dann werden sofort alle Threads, die warten, mit notifyAll darauf hingewiesen.

        Parameters:
        upperBoundPermit - Neue Obergrenze, soviele Sperren stehen nun zur Verfügung