Avatar billede esbenp Nybegynder
09. august 2006 - 14:16 Der er 7 kommentarer og
1 løsning

Statisk, synchronized og locks

Hvis nu jeg har en klasse:

class A{
  static Object mutex = new Object();
}

så vil objektet blive instantieret når A bliver instantieret eller en statisk felt/metode bliver brugt.

Hvis nu det sker næsten samtidigt fra to forskellige tråde sker der så nogen synkronisering?
Avatar billede erikjacobsen Ekspert
09. august 2006 - 14:39 #1
Din mutex bliver lavet før programmet rigtig starter, fordi det er static. Derfor har du ikke problemer med tråde lige med den der.
Avatar billede erikjacobsen Ekspert
09. august 2006 - 14:46 #2
Det passer jo ikke hvad jeg skriver. Kan være jeg blander sammen med noget andet eller tidligere udgaver.

Du kan altid snyde og i main-metoden, inden du laver tråde, banke en

  new A();

afsted. Så er der i hvert fald sket noget uden trådproblemer.
Avatar billede arne_v Ekspert
09. august 2006 - 15:00 #3
mutex bliver instantieret foerste gang der er en reference til A
(static eller ikke static)

jeg vil mene at den er thread safe
Avatar billede esbenp Nybegynder
09. august 2006 - 16:47 #4
Hvad er begrundelsen for at den er thread-safe? Kan man ikke risikere at der bliver lavet to forskellige objekter?
Avatar billede arne_v Ekspert
09. august 2006 - 17:58 #5
Avatar billede esbenp Nybegynder
10. august 2006 - 12:22 #6
Det giver god mening. Smid et svar begge
Avatar billede erikjacobsen Ekspert
10. august 2006 - 12:37 #7
Nej tak.
Avatar billede arne_v Ekspert
10. august 2006 - 13:44 #8
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester