Tråde & Executors – uge 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
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)
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
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
Øvelse 1Ud for dit navn skal du skive:”I am here and I am proud of it”
Ø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.
Øvelse 3 Der står 17 i celle E1
Læg 23 til det tal der står i celle E1
Pause
TrådeEksempelKode Threads01
EksempelKode Threads02
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
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)
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.
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”?
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
Pause
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
Eksempel koden til øvelserneExecutor01 Executor03
Hvor kan I forestille jer dette ”design mønster” blive brugt?