5.2 Thread-Eigenschaften und Zustände
344
5.2.1 Der Name eines Threads
344
5.2.3 Die Zustände eines Threads *
346
5.2.4 Schläfer gesucht
347
5.2.5 Mit yield() und onSpinWait() auf Rechenzeit verzichten
348
5.2.6 Der Thread als Dämon
349
5.2.7 Freiheit für den Thread – das Ende
351
5.2.8 Einen Thread höflich mit Interrupt beenden
352
5.2.9 UncaughtExceptionHandler für unbehandelte Ausnahmen
354
5.2.10 Der stop() von außen und die Rettung mit ThreadDeath *
355
5.2.11 Ein Rendezvous mit join(…) *
356
5.2.12 Arbeit niederlegen und wieder aufnehmen *
358
5.4 Synchronisation über kritische Abschnitte
372
5.4.1 Gemeinsam genutzte Daten
372
5.4.2 Probleme beim gemeinsamen Zugriff und kritische Abschnitte
372
5.4.3 Punkte nebenläufig initialisieren
374
5.4.4 i++ sieht atomar aus, ist es aber nicht *
376
5.4.5 Kritische Abschnitte schützen
377
5.4.6 Kritische Abschnitte mit ReentrantLock schützen
379
5.4.7 Synchronisieren mit synchronized
386
5.4.8 Synchronized-Methoden der Klasse StringBuffer *
387
5.4.9 Mit synchronized synchronisierte Blöcke
388
5.4.10 Dann machen wir doch gleich alles synchronisiert!
389
5.4.11 Lock-Freigabe im Fall von Exceptions
390
5.4.13 Mit synchronized nachträglich synchronisieren *
393
5.4.14 Monitore sind reentrant – gut für die Geschwindigkeit *
394
5.4.15 Synchronisierte Methodenaufrufe zusammenfassen *
395