Extentor

Christian Smith created page 19 October 2015

commented 15 March 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. 

Teacher commented 15 March 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.

commented 15 March 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å.

Teacher commented 15 March 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.

One user removed his/her comment
commented 16 March 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?

Teacher commented 16 March 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.

commented 16 March 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?

Teacher commented 16 March 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.

Feedback News