Lecture overview -- Keyboard shortcut: 'u'  Previous page: Indbyrdes fremdrift i tråde  -- Keyboard shortcut: 'p'  Next page: Eksempel på prioriteter: Prioriterede sange -- Keyboard shortcut: 'n'  Lecture notes - all slides and notes together  slide -- Keyboard shortcut: 't'  Help page about these notes  Alphabetic index  Course home  Page 21 : 41
Forelæsningsnoter i Objekt-orienteret Programmering
Samtidighed i Java
Skedulering baseret på prioriteter i Java

Vi ser nu på detaljerne i Java's skeduleringsalgoritme

  • Skedulering af tråde i Java

    • Java udfører altid en af de kørbare tråde, som har højste prioritet

      • Der kan være flere kørbare tråde som alle har højste prioritet

    • En tråd T kører indtil

      • En kørbar tråd S med højere prioritet opstår (ny tråd S, prioritet(S) hæves, prioritet(T) sænkes)

      • T overgiver frivilligt kontrollen med sleep(), yield(), wait() eller lignende

      • T involveres i blokerende input/output

      • T's run metode er kørt til ende

      • På systemer med time slicing: tråden har været kørt i et fastlagt tidsinterval

        • Kontrollen overgives til en tråd med højeste prioritet

    • Preempting: En tråd med højere prioritet vil overtage kontrollen umiddelbart fra en lavere prioriterede tråd

    • Deterministisk: Skeduleringen varetages af en fast algoritme, som ikke forsøger at simulere nogen form for tilfældighed eller uregelmæssighed

At være 'preempting' betyder direkte oversat at 'tage selv forud for andre'. I ovenstående er betydningen, at en tråd, som på en eller anden måde får højere prioritet end alle andre, umiddelbart overtager CPU'en

I klassen Thread findes en række simple metoder, som ændrer på prioriteterne af en tråd. Disse er setPriority og getPriority