Page 7 : 41
Forelæsningsnoter i Objekt-orienteret Programmering
Samtidighed i Java
* Introduktion og motivation
Vores programmering indtil nu...
Naturlig samtidighed
Afgrænsning
Terminologi
* Begreber og problemstillinger
Grundliggende antagelser
Oversigt over væsentlige problemstillinger
Samtidighed i forhold til OOP
* Tråde i Java
Trådbegrebet i Java
Interfacet Runnable
Trådskabelse gennem subklasse af Thread
Trådskabelse ved implementering af Runnable
Egenskaber af klassen Thread
Eksempel på et program med tråde: Skjald
Mulige tilstande af en tråd i Java
Tråde i forhold til Swing
* Skedulering af tråde i Java
Indbyrdes fremdrift i tråde
Skedulering baseret på prioriteter i Java
Eksempel på prioriteter: Prioriterede sange
Tommelfingerregler for prioritering
* Synkronisering af tråde i Java
Interferens mellem tråde
Kritiske regioner
Synkroniserede metoder
Eksempel på synkronisering: SynkroniseretKonto
Detaljer om synkroniserede metoder
Trådsikre klasser
Java's synchronized kommando
Synkroniserede konti via synchronized kommandoer
Monitorer
Synkronisering: For lidt og for meget
Eksempel på et program med synkronisering: Producent og Forbruger
Wait og notify
Wait og Notify idioms
Eksempel på et program med synkronisering: Synkroniseret Sangkor
Skedulerende og synkroniserende metoder: oversigt
* Trådgrupper
Trådgrupper
Grundliggende antagelser
Vi starter denne afdeling med en meget væsentlig antagelse, som på en grundliggende måde vil påvirke vores programmering med samtidige forløb
Den indbyrdes hastighed af samtidige programforløb er ukendt
Et program med samtidighed kan udvise
nondeterministisk adfærd:
Rækkefølgen af handlinger i forskellige programforløb kendes kun sjældent
To kørsler af samme program (med samme input) kan give forskellige resultater
Antagelser om programforløb's indbyrdes hastigheder kan ikke benyttes til at ræsonnere om et programs korrekthed