Lecture overview -- Keyboard shortcut: 'u'  Previous page: Introduktion og motivation [Section] -- Keyboard shortcut: 'p'  Next page: Naturlig samtidighed -- Keyboard shortcut: 'n'  Lecture notes - all slides and notes together  slide -- Keyboard shortcut: 't'  Help page about these notes  Alphabetic index  Course home  Page 2 : 41
Forelæsningsnoter i Objekt-orienteret Programmering
Samtidighed i Java
Vores programmering indtil nu...

Lad os starte med at karakterisere den slags programmering, vi har bedrevet indtil vi nu i denne lektion bliver introduceret for mulighederne for samtidighed

Når vi programmerer er vi vant til at skulle fastlægge rækkefølgen af alle de handlinger, vi foreskriver. Ofte er rækkefølgen væsentlig. Men til andre tider er rækkefølgen ligegyldig. Når sidstnævnte er tilfældet åbner vi i mange tilfælde op for betydelig bedre programmer ved ikke at insistere på en bestemt rækkefølge af de foreskrevne handlinger. Denne observation er en passende måde at starte dagens emne, som vi har valgt at kalde samtidighed

Indtil denne lektion har vore programmer beskrevet handlinger i én ganske bestemt rækkefølge

Et sekventielt programforløb udfører beregningsenheder i en bestemt rækkefølge. Én beregningsenhed starter først når den forrige er afsluttet

I et sekventielt programforløb, eller blot i et sekventielt program, udføres de enkelt beregningsenheder i en rækkefølge, som er bestemt af programmets kontrolstrukturer. Beregningsenhederne er primært kommandoer, men også de enkelte dele af udtryk bør i denne sammenhæng betegnes som beregningsenheder

  • Vi siger at et sekventielt program udviser deterministisk adfærd:

    • Determinisme indebærer at enhver handling er en uundgåelig konsekvens af de foregående handlinger

    • Det er fuldstændigt forudbestemt i hvilken rækkefølge kommandoerne i et sekventielt program bliver udført

      • Brugerinput kan dog siges at udgøre et nondeterministisk element

    • Hvis et program kører flere gange med samme input giver det samme resultat hver gang

Vi vil i denne lektion studere ikke-sekventielle programmer som kan udvise nondeterministisk adfærd