Java Reference
In-Depth Information
Sollte Sie stören, dass beim Abschalten der Automatik die Ampelphasen immer bis zur
vierten Phase abgearbeitet werden, dann sollten Sie noch folgende Verbesserungen vor-
nehmen. Definieren Sie die Dauer der Ampelphasen statt in vier Variablen in einem
Array:
private int[] phasendauer = {3000, 500, 3000, 500};
Ändern Sie die while -Schleife in der run -Methode nach folgendem Muster:
public void run() {
int i=1;
while (jCBAutomatik.isSelected()) {
try {
jAmpel.setPhase(i);
Thread.sleep(phasendauer[i-1]);
i++;
if (i > 4) {
i=1;
14
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Listing 14.9 Verbesserte while-Schleife mit nur einem Phasenwechsel
Dadurch, dass nur noch ein Phasenwechsel in der Schleife steht, endet die Automatik
unmittelbar mit dem Ausschalten. Sie finden auf der DVD im Ordner Arbeitsumgebung\
Java\Programme\JavaUebung14 vier Versionen der Ampelsteuerung als Musterlösung.
Die Versionen Ampelsteuerung_1 (ohne paintImmediately ) und Ampelsteuerung_2 (mit
paintImmediately ) nutzen keinen Thread und blockieren dadurch die Bedienung des
Programms. Die Version Ampelsteuerung_3 verwendet einen Thread, durchläuft aber
nach dem Abschalten der Automatik noch die Phasen bis zur Gelbphase. Die Version
Ampelsteuerung_4 nutzt die verbesserte while -Schleife und ist voll funktionsfähig.
14.2.3
Gefahren bei der Nutzung von Threads
Die Gleichzeitigkeit des Ablaufs von Anweisungen beim Einsatz von Threads birgt auch
einige Risiken. Stellen Sie sich z. B. vor, dass zwei oder mehr Threads die gleiche Datei
bearbeiten sollen. Zur gleichen Zeit, zu der ein Thread in die Datei schreiben möchte,
Search WWH ::




Custom Search