Java >> Java tutorial >  >> Tag >> synchronized

java-syntaks:synkroniseret (dette)

Det betyder, at denne kodeblok er synchronized hvilket betyder, at ikke mere end én tråd vil være i stand til at få adgang til koden inde i den blok.

Også this betyder, at du kan synkronisere på den aktuelle instans (opnå lås på den aktuelle instans).

Dette er, hvad jeg fandt i Kathy Sierras java-certificeringsbog.

Fordi synkronisering skader samtidighed, ønsker du ikke at synkronisere mere kode end nødvendigt for at beskytte dine data. Så hvis omfanget af en metode er mere end nødvendigt, kan du reducere omfanget af den synkroniserede del til noget mindre end en fuld metode – til blot en blok.

Se på følgende kodestykke:

public synchronized void doStuff() {
    System.out.println("synchronized");
}

som kan ændres til dette:

public void doStuff() {
   //do some stuff for which you do not require synchronization
   synchronized(this) {
     System.out.println("synchronized");
     // perform stuff for which you require synchronization
   }
}

I det andet uddrag anvendes synkroniseringslåsen kun for denne kodeblok i stedet for hele metoden.


synchronized (this)

er syntaks til at implementere synkronisering på blokniveau.

Det betyder, at på this kun et objekt, og kun én tråd kan udskille den vedlagte blok ad gangen.

Se her for et mere detaljeret svar:Blokniveausynkronisering


Java tag