Hva er semafor
Hvis telleren er større enn null, får tråden tilgang til den delte ressursen, og telleren er dekrementert av en, ellers får tråden ikke en tillatelse og vil bli suspendert. Når trådens utførelse er fullført, er ikke ressursen lenger nødvendig, og tråden slipper den. Tellerverdien økte med en når ressursen ble utgitt. Tråden må først få tillatelse og må vente før ressursene skal anskaffes. Tråden vil ikke kunne dele noen ressurser hvis en teller når null:
Nå er den komplette utførelseskoden nevnt nedenfor:
Importer Java.util.samtidig.*;Nå i koden ovenfor har vi definert tre forskjellige klasser som er 'Semphoreclient', 'SharedResource', og 'Semaphorethread'. I semaphoreclient har vi initialisert to tråder med en tillatelse. Tråd T1 øker telleren når den utføres mens tråd T2 vil redusere den. SharedResource -klassen er hvor trådene vil dele tilgang. I Semaphorethread -klassen har vi satt i gang låsingsprosessen for både trådene T1 og T2, noe som betyr at hvis noen av de to trådene låser prosessen og begynner å utføre, må den andre vente til låsen er utgitt. Nå før du utfører koden, må du sørge for at du først har installert Java Development Kit (JDK) -applikasjonen i Linux -operativsystemet ved å bruke kommandoen nedenfor i terminalen
$ sudo apt install standard-jdkNå etter bekreftelsen, kan du åpne hvilken som helst redigerer og deretter skrive og lagre Java -koden inne i den som vist nedenfor.
$ nano semaphoreclient.JavaKoden som vi har skrevet inne i 'Semaphoreclient.java ' Filen vises nedenfor.
Du kan se utdataene fra koden som vist nedenfor
Utgangen viser at det er to tråder; I det første bildet er tråd T1 blitt utført, og når T1 først slipper tillatelsen, begynner tråd T2 å utføre; I det andre bildet har tråd T2 blitt utført først, etterfulgt av tråd T1. Dette innebærer at hvilken tråd som hadde muligheten først vil låse prosessen, og krever at den andre tråden skulle vente.
Konklusjon
En semafor er et Java -objekt som brukes til å kontrollere tilgangen til en delt ressurs, og det er en trådsynkroniseringsmetode som lar deg sende signaler over tråder for å administrere flere oppgaver samtidig. Det gir tilgang til den delte ressursen, og som et resultat må en tråd først få tillatelse fra semaforen før han bruker ressursene. I denne artikkelen har vi laget to tråder A og B med en tillatelse. Så noen av disse to trådene vil begynne å utføre og låse prosessen, så må den andre tråden vente til prosessen er utgitt.