Till KTH:s startsida Till KTH:s startsida

Extentor

Christian Smith skapade sidan 19 oktober 2015

kommenterade 15 mars 2016

Det verkar vara problem att läsa tentorna 2012-2013 på denna sida. Dessa tentor verkar ligga under CSC. Det är även problem att läsa föreläsningar 11 och 12. 

Lärare kommenterade 15 mars 2016

Jag har inga problem att komma åt tentorna via länken ovan, jag ska se om jag kan ta reda på vad som går snett.

kommenterade 15 mars 2016

Jonathan: Testa en annan webbläsare. Jag lyckas komma åt dem med Firefox, men inte med Google Chrome.

Det här problemet har uppstått för andra kurser också. Jag har ingen aning om vad det beror på.

Lärare kommenterade 15 mars 2016

Jag har inga problem med någon kombination av system/webläsare/nerladdare som jag har kunnat testa, så det borde finnas någon version som fungerar för dig.

En användare har tagit bort sin kommentar
kommenterade 16 mars 2016

Angående nyckelordet "synchronized"..

Från din föreläsning och tenta-facit verkar det som att när en tråd anropar en synkroniserad metod tar den låset för just den metoden.

Däremot, enligt oracle docs (https://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html) tycker jag det verkar som att om en tråd anropar en synkroniserad metod tar den det "intrinsiska låset" för hela objektet, aka ett lås som verkar på alla synkroniserade metoder i det objektet.

Vilket av dem har jag tolkat fel?

Lärare kommenterade 16 mars 2016

Om du deklarerar en metod som synchronized används objektets egna lås, och alla metodanrop på synkroniserade metoder i samma objekt använder alltså samma lås.

Om du däremot deklarerar ett enskilt kodblock som synchronized kan du explicit ange vilket lås som ska användas, och det är möjligt att låsa olika kodblock med olika lås.

kommenterade 16 mars 2016

Tack för svaret!

Varför, i så fall, är 3b) på den här tentan https://www.kth.se/social/upload/536a1db3f2765409e5cccce9/DD1346_140320.pdf inte trådsäker?

Lärare kommenterade 16 mars 2016

I 3b har vi en klassvariabel (static), som alltså är gemensam över alla instanser. Om tråd 1 anropar incA() på objekt A, och tråd 2 anropar incA() på objekt B, så kommer respektive anrop att låsas med olika lås, och kan alltså ske samtidigt, med interferens som en möjlig följd.

I 3c har vi sett till att alla objekt delar på samma lås, och det går alltså inte att komma runt låset genom att anropa t.ex incA() på ett annat objekt.