Tråde & Executors – uge 2

Preview:

Citation preview

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?

Recommended