tråde & executors – uge 2

19
Tråde & Executors – uge 2

Upload: others

Post on 16-Oct-2021

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tråde & Executors – uge 2

Tråde & Executors – uge 2

Page 2: Tråde & Executors – uge 2

Dagsorden Opsamling fra sidste uge Tråde i Java Pauser Hvordan laver Java fere ting samtidigt Synkronisering af resource forbrug

Executor frameworket

Page 3: Tråde & Executors – uge 2

Opsamlinga) Et par små tricks til få RES over i en fl eller den

anden vej.

b) Både Add & Mula) To forskellige PATH (picoserver06A)b) Vha en ekstra parameter (picoserver06B)

Page 4: Tråde & Executors – uge 2

Alt om tråde på en slide En computer kan køre mere end et program ad

gangen Java maskinen (JVM) kan køre mere end en “ting”

ad gangen Disse “ting” kaldes tråde (threads).

Der er mange forskellige måder at starte tråde på Vi skal se på 3 i dag, og arbejde med en i øvelserne

Der er forskellige problemer med samtidighed Vi skal se på en af dem her på 2. semester

Page 5: Tråde & Executors – uge 2

Tråde - samtidighedI – de studerende – er “tråde” i disse øvelser.

Øvelse 1: Vi har et google sheet på denne side:https://goo.gl/ZaktJi

Page 6: Tråde & Executors – uge 2

Øvelse 1Ud for dit navn skal du skive:”I am here and I am proud of it”

Page 7: Tråde & Executors – uge 2

Øvelse 2 – brug C-kolonnenFind det første fornavn under dit eget som starter med det bogstav dit fornavn slutter på.

Hvis der ikke er et nedenfor kikker du fra ovenHvis det ikke er der vælger du bare dit eget

Ud for det navn skal du skrive et tal som er antallet af bogstaver i dit eget navn. Hvis der står et tal i forvejen lægger du dit antal til.

Page 8: Tråde & Executors – uge 2

Øvelse 3 Der står 17 i celle E1

Page 9: Tråde & Executors – uge 2

Læg 23 til det tal der står i celle E1

Page 10: Tråde & Executors – uge 2

Pause

Page 11: Tråde & Executors – uge 2

TrådeEksempelKode Threads01

EksempelKode Threads02

Page 12: Tråde & Executors – uge 2

RunableInterfacet Runnable har været med siden 1995 (JDK1.0).

Der er en metode der skal implementeres.

Runnable indfanger En opgave/task der skal udføres

Page 13: Tråde & Executors – uge 2

Parametre til RunnableSe kode eksempel Threads03

Kasper tegner på tavlen for at pointere ideen om ata) Task oprettes i en tråd (main tråden)b) Task udføres af arbejdstrådene (t1, t2, t3)

Det er denne arbejdsdeling der minder lidt om tjeneren der laver bestillinger (tjeneren er main), og kokkene der laver maden (t1, t2, t3)

Page 14: Tråde & Executors – uge 2

sleep metodenSleep metoden er helt ligegyldig – og er brugt meget.

Sleep metoden stopper tråden i et antal millisekunder.

Sleep metoden bruges i eksempel kode til at illustrere at ”her gør tråden noget der tager tid, som vi ikke orker at kode lige her”. Henter data fra en database Henter data fra nettet Laver en kompliceret beregning Afspiller musik osv.

Page 15: Tråde & Executors – uge 2

Syncronized metoderForskellen mellem eksempel: ThreadsSyncUnsafe ThreadsSyncSafe

Hvad ”synkroniseres der på”? En lås for hele JVM? En lås per tråd? En lås per ”hvad”?

Page 16: Tråde & Executors – uge 2

Opgave Skriv ThreadsSyncSafe koden om så der IKKE

benyttes en anonym indre klasse, men en almindelig klasse der enten implementerer Runnable er en subklasse af Thread

Page 17: Tråde & Executors – uge 2

Pause

Page 18: Tråde & Executors – uge 2

Executor Systematisering af restaurant arbejdsgangen

1. Der er nogle der tager imod ordre2. Der er nogle der laver maden3. Der er nogle der serverer4. Der er nogle der tager imod penge

Page 19: Tråde & Executors – uge 2

Eksempel koden til øvelserneExecutor01 Executor03

Hvor kan I forestille jer dette ”design mønster” blive brugt?