Balking (sperrt) Pattern

Der Balking-Pattern kann verwendet werden, wenn nur ein Objekt eine Aktion starten darf, das in einem bestimmten Zustand ist. Alle anderen weiteren Aufrufe, werden solange ignoriert, bis die Aktion abgeschlossen wurde.
Ein Beispiel zum ansteuern einer Schnittstelle die nur einmal geöffnet werden darf:


public class Schnittstelle {

private boolean isOpen = false;

/**
* Diese Methode wird zum öffnen der Schnittstelle aufgerufen.
*/
public void openSchnittstelle() {
synchronized (this) {
if (isOpen) {
return;
}
isOpen = true;
}
// Hier wird die Schnittstelle geöffnen ...
}

/**
* Diese Methode wird aufgerufen wenn die Schnittstelle geöffnet wurde.
*/
void schnittstelleGeoeffnet() {
isOpen = false;
}
}

Wichtig ist das synchronized es verhindert zwei Aufrufe zur gleichen zeit. Das heißt der eine Aufruf läuft normal und der andere wird gesperrt (balking).