Threadpool Flashcards

1
Q

Vad är skillnaden på en tråd och en trådpool?

A

En tråd förstörs efter att den utfört sin uppgift vilket resulterar i att en tråd skapas för varje uppgift. En tråd i en trådpool återvänder till trådpoolen när den utfört sin uppgift och förstörs inte, därav är det möjligt att återanvända samma tråd gång på gång.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Vad är fördelen till att använda en trådpool för utförande av uppgifter kontra trådar?

A

En trådpool bidrar till:

  • ökad prestanda då det minskar antalet skapade resurser.
  • Använder sig av en form av parallellism där uppgifter kan göras asynkront.
  • Inget skapande eller förstörande av massor av trådar för korta, enkla att utföra uppgifter.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Förklara hur det är fördelaktigt att använda en trådpool i ett program som exempelvis en webbserver.

A

En webbserver tar emot en mängd av http-requests varje dag, för att systemet inte ska överbelastas används en trådpool för att hantera inkommande requests. Alla requests får en egen tråd som utför den uppgift som behöver göras, därefter återvänder tråden till sin trådpool för att invänta nästa request. (Finns det inga trådar tillgängliga kommer requesten att få vänta tills en tråd är tillgänglig?)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Hur skapar man en trådpool?

A

ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor) Executors.newCachedThreadPool();

Detta kommer att skapa upp en trådpool som skapar trådar efter behov

ThreadPoolExecutor threadPoolExecutor = new ThreadpoolExecutor();

Detta kommer att skapa upp en trådpool där du själv behöver specificera antalet trådar du önskar att trådpoolen ska innehålla utöver andra specifikationer.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

I trådpoolar nämns en metod för hur man utför en task, vad heter denna metod och hur används den?

A

Metoden heter execute(Object o) och tar emot ett object i dess parameter.

Genom att använda en instansvariabel exempelvis threadPoolExecutor kan metoden kallas på.

threadPoolExecutor.execute(Object o);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

I trådpoolar kan du även aktivt stänga ned trådpoolen och utföra de kvarvarande uppgifterna, vad kallas denna metod?

A

shutdown() den används för att avsluta trådpoolen men först efter att den utfört alla sina uppgifter, efter att den gjort alla uppgifterna tar den inte längre emot nya uppgifter.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Vad kallas trådar i en trådpool?

A

Worker threads.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Ge några förslag på applikationer där trådpoolar är lämpliga att användas

A
  • En applikation där det skapas och förstörs många trådar konstant.
  • En applikation där det finns en mängd små uppgifter att utföra asynkront.
  • En applikation som hanterar fler individuellt i bakgrunden parallellt.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Vad är en tumregel för hur många trådar en trådpool bör innehålla?

A

En trådpools trådar bör inte överskrida antalet kärnor som finns på den datorn som exekverar uppgiften.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Varför bör en trådpools mängd trådar inte överskrida antalet kärnor för den exekverande datorn?

A

Det handlar om “diminishing returns”, efter ett visst antal trådar kommer den hastighet som ditt programs trådpool hanterar uppgifter inte överskrida den belastningen som datorns CPU utsätts för.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

När är det inte lämpligt att använda trådpoolar?

A
  • När en tidskrävande process utförs eftersom att tråden kommer vara upptagen länge och blockera andra trådar.
  • När andra trådars uppgifter är beroende av den tidskrävande processen.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly