Lecture overview -- Keyboard shortcut: 'u'  Previous page: Egenskaber af klassen Thread -- Keyboard shortcut: 'p'  Next page: Mulige tilstande af en tråd i Java -- Keyboard shortcut: 'n'  Lecture notes - all slides and notes together  slide -- Keyboard shortcut: 't'  Help page about these notes  Alphabetic index  Course home  Page 16 : 41
Forelæsningsnoter i Objekt-orienteret Programmering
Samtidighed i Java
Eksempel på et program med tråde: Skjald

Lad os nu se på vores første egentlige program med flere tråde. Eksemplet viser en 'skjald' som synger en sang. Samtidigheden kommer ind i billedet når to skjalde synger hver sin sang

/user/normark/courses/prog1/prog1-01/sources/java/noteEksempler/Sangkor.javaKlassen Skjald som arver fra Thread.

Klassen Skjald som arver fra Thread. Skjald starter en tråd, som synger sine strofer et antal gange via metoden syngVers. Et vers består altså af et antal strofer (linier) i en bestemt rækkefølge. Når et vers synges holdes der en pause efter afsyngningen af hver strofe. Pausen's længde er bestemt af instansvariablen forsinkelse. Pausen realiseres ved at tråden sover et tidsrum, som er bestemt af en parameter til konstruktoren. Når en tråd sover kan Java's køretidssystem benytte lejligheden til at give CPU'en til en anden tråd, som kan udføres

/user/normark/courses/prog1/prog1-01/sources/java/noteEksempler/Sangkor.javaKlassen Sangkor, som starter to aktive Skjald objekter.

Klassen Sangkor, som starter to aktive Skjald objekter. Hver skjald synger en af vort land's elskede sange, hhv. 'Mester Jakob' og 'Glade jul'. Bemærk at pauserne mellem stroferne i 'Mester Jakob' er væsentlig kortere end i 'Glade jul' (som jo bør afsynges i 'salmetempo').

/user/normark/courses/prog1/prog1-01/sources/java/noteEksempler/Sangkor.javaDet samlede program med klasserne Skjald og Sangkor.

Det samlede program med klasserne Skjald og Sangkor.

/user/normark/courses/prog1/prog1-01/sources/java/noteEksempler/SangkorOutputMuligt output fra ovenstående program.

Muligt output fra ovenstående program. Vi siger 'muligt output', idet andre skeduleringer ikke kan udelukkes (f.eks. på en anden platform, som implementerer en anden skeduleringsalgoritme)