Page 18 : 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
Tråde i forhold til Swing
Vi vil her kort indskyde nogle bemærkninger om tråde i Swing
Swing udfører al eventhåndtering i en såkaldt
event-dispatch tråd
Generelle retningsliner for brug af tråde i Swing
Efter at brugergrænsefladen er
realiseret
skal al forandring af brugergrænsefladen udføres i event-dispatch tråden
Der findes særlige metoder til at 'skyde program ind i' event-dispatch tråden:
SwingUtilities.invokeLater
SwingUtilities.invokeAndWait
Hvis der udføres lange operationer i event-dispatch tråden bliver brugergrænsefladen ude af stand til at reagere på events
Lange operationer bør - om muligt - udfaktoriseres i en ny tråd fra event-dispatch tråden
Threads and Swing