Package de.bsvrz.sys.funclib.concurrent
Class Semaphore
- java.lang.Object
-
- de.bsvrz.sys.funclib.concurrent.Semaphore
-
public class Semaphore extends java.lang.ObjectDiese Klasse implementiert ein Semaphor, das zur Synchronisation von Threads verwendet werden kann.
-
-
Constructor Summary
Constructors Constructor Description Semaphore(int permits)Einen Semaphor erzeugen, derpermitvieleacquireZugriffe zuläßt, bis er jeden weiteren Thread, deracquireaufruft, mit wait "schlafen" legt.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidacquire()Eine Sperre des Semaphores anfordern, sind keine Sperren mehr zu vergeben, dann wird der Thread mit wait() angehalten.voidrelease()Eine Sperre des Semaphores freigeben, dies befreit andere Threads, die auf eine Sperre warten.voidsetUpperBoundPermit(int upperBoundPermit)Diese Methode setzt die Anzahl der Sperren neu.
-
-
-
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
-
-