Slik unngår du samtidig tilgang til en metode i Java

Moderne prosessorer med flere kjerner kan dra nytte av samtidige Java-programmer. En samtidige søknad er en som utfører flere operasjoner samtidig. Samtidighet introduserer unike utfordringer som må løses for å unngå problemer. Et stort problem oppstår når to tråder av henrettelse hver tilgang til den samme metoden samtidig. En tråd kan interferere med hverandre og gjøre data upålitelig. For å kontrollere dette problemet, kan du hindre samtidig tilgang til en metode ved hjelp av synkroniseringsfunksjonen i Java.

Bruksanvisning

1 Laste NetBeans IDE ved å klikke på programikonet. Når programmet laster, naviger til "Ny / New Project" og velg "Java Application" fra listen til høyre side av skjermen. En ny kildekode-filen vises i NetBeans tekst editor. Kildekoden filen inneholder en tom hovedfunksjon.

2 Erklære en statisk variabel som heter x ved å skrive følgende i hovedfunksjonen i kildekoden: static int x = 0;

3 Lag en synkronisert metode ved å legge til "synkronisert" søkeord til metoden erklæringen. En synkronisert metoden kan bare nås ved en tråd om gangen, og dermed hindre data uoverensstemmelser. Å erklære en metode som heter "metode" synkronisert, skriver følgende erklæring i kildekoden file: public synkronisert metode ()

4 Øke et tall ved å skrive følgende utsagn innenfor klammeparenteser av metoden: returnere x ++;

5 Ring synkronisert metode. For å forstå hva synkronisering oppnår først antar at metoden ble ikke synkronisert. Hvis to parallelle tråder kaller metoden samtidig, vil de hver øke variabelen x. Siden x starter på 0, vil resultatet av en operasjon inkrement være x = 1. Dette er et problem fordi metoden ble kalt to ganger, og derfor bør tilsvare x 2. Ettersom "metode" er synkronisert, bare ett av de to parallelle tråder vil gå inn i fremgangsmåten på en gang. En tråd vil gå inn "metode," tilvekst x, og avslutte. Dette gjør at andre tråden for å skrive inn "metode" og utføre andre tilvekst drift. Med synkronisert søkeord, to samtaler til "metode" resultat i x være lik 2. En metodekall kan skrives slik: metode ();