Que es semáforo
Si el contador es mayor que cero, el hilo se otorga acceso al recurso compartido, y el contador está disminuido por uno, de lo contrario, el hilo no obtendrá un permiso y se suspenderá. Cuando se completa la ejecución del hilo, el recurso ya no se requiere y el hilo lo libera. El valor del contador aumentó en uno una vez que se liberó el recurso. El hilo debe obtener permiso primero y debe esperar antes de adquirir recursos. El hilo no podrá compartir ningún recurso si un contador alcanza cero:
Ahora se menciona a continuación el código completo de la ejecución de los subprocesos:
importar java.utilizar.concurrente.*;Ahora en el código anterior, hemos definido tres clases diferentes que son 'Semphoreclient', 'SharedResource', y 'Semaphorethread'. En Semaphoreclient hemos inicializado dos hilos con un permiso. El hilo T1 incrementará el contador cuando se ejecute mientras el hilo T2 lo disminuirá. SharedResource Class es de donde los hilos compartirán el acceso. En la clase Semaphorethread, hemos iniciado el proceso de bloqueo para ambos subprocesos T1 y T2, lo que significa que si alguno de los dos subprocesos bloquea el proceso y comienza a ejecutar, el otro tiene que esperar hasta que se haya lanzado el bloqueo. Ahora, antes de ejecutar el código, debe asegurarse primero que ha instalado la aplicación Java Development Kit (JDK) en su sistema operativo Linux utilizando el siguiente comando en el terminal
$ sudo apt instalación predeterminado-jdkAhora, después de su verificación, puede abrir cualquier editor y luego escribir y guardar el código Java dentro de él como se muestra a continuación.
$ nano semáforeclient.JavaEl código que hemos escrito dentro del 'Semaforecliente.Java' El archivo se muestra a continuación.
Puede ver la salida del código como se muestra a continuación
La salida muestra que hay dos hilos; En la primera imagen, el hilo T1 se ha ejecutado, y luego una vez que T1 libera el permiso, el hilo T2 comienza a ejecutarse; En la segunda imagen, el hilo T2 se ha ejecutado primero, seguido por el hilo T1. Esto implica que cualquier hilo tuvo la oportunidad primero bloqueará el proceso, requeriendo que el otro hilo espere.
Conclusión
Un semáforo es un objeto Java que se utiliza para controlar el acceso a un recurso compartido y es un método de sincronización de subprocesos que le permite enviar señales a través de los subprocesos para administrar varias tareas al mismo tiempo. Otorga acceso al recurso compartido y, como resultado, un hilo primero debe obtener permiso del semáforo antes de usar los recursos. En este artículo, hemos creado dos hilos A y B con un permiso. Por lo tanto, cualquiera de estos dos hilos comenzará a ejecutar y bloquear el proceso, luego el otro subproceso debe esperar hasta que se libere el proceso.