Avatar billede cs_henrik Nybegynder
19. november 2001 - 14:04 Der er 6 kommentarer og
1 løsning

Synchronized i statisk metode

Når jeg vil lave en synchronized blok inde i en metode plejer jeg at bruge flg.:

public void testMethod()
{
  synchronized(this)
  {
    //Ting && sager, der skal være synchronized.
  }
  //ting && sager, der ikke skal være synchronized.
}

Hvad gør jeg i det tilfælde hvor jeg har en statisk metode, hvori der skal være en blok synchronized kode? Her giver det jo ikke mening at skrive synchronized(this), idet this angiver det pågældende objekt. At bruge synchronized() giver en compilerfejl.

Hvis jeg lader hele metoden være statisk, kan det godt lade sig gøre, men dette er ikke optimalt.
Er der nogen, der ved noget?

Mvh. Henrik
Avatar billede disky Nybegynder
19. november 2001 - 14:11 #1
prøv med

synchronized (KlasseNavn.class)
{
}


hvor KlasseNavn er navnet på den klasse du vil beskytte noget inden i
Avatar billede cs_henrik Nybegynder
19. november 2001 - 14:28 #2
Desværre.
Det giver fejl:

StaticTest.java:3: <identifier> expected
    public static void testMethod(StaticTest.class)
                                                ^
StaticTest.java:3: <identifier> expected
    public static void testMethod(StaticTest.class)
                                                      ^
StaticTest.java:11: \'{\' expected
    }
        ^
StaticTest.java:12: \'}\' expected
}
^
StaticTest.java:3: missing method body, or declare abstract
    public static void testMethod(StaticTest.class)
                          ^
5 errors


Avatar billede disky Nybegynder
19. november 2001 - 14:30 #3
der er i din synchronized statement du skal have det

altså.

public static void testMethod()
{
  synchronized(Klasse.class)
  {
    //Ting && sager, der skal være synchronized.
  }
  //ting && sager, der ikke skal være synchronized.
}



Avatar billede cs_henrik Nybegynder
19. november 2001 - 14:38 #4
Beklager... jeg lavede en fejl..

Tak for hjælpen
Avatar billede disky Nybegynder
19. november 2001 - 14:40 #5
virker det nu ?
Avatar billede cs_henrik Nybegynder
19. november 2001 - 14:42 #6
Yes, det virker.

Jeg var vist sindssyg i gerningsøjeblikket, hvor jeg indsatte \"KlasseNavn.class\" i parameterlisten for metoden :-)
Avatar billede disky Nybegynder
19. november 2001 - 14:43 #7
:-)

det lyder alt for bekendt.
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