¿Cómo verificar si un subproceso tiene un bloqueo en un objeto particular en Java?

El lenguaje Java es uno de los lenguajes más populares durante muchos años. Una de las características más ventajosas de la programación Java es Multithreading. Multithreading permite ejecutar un solo programa en muchas partes pequeñas del programa con la máxima utilización de la CPU. Los subprocesos son un proceso liviano que ayuda a ejecutar el proceso grande concurrente de manera eficiente. pero a veces estos hilos disminuyen la eficiencia del programa. 

Tomemos un ejemplo de la vida real de por qué el uso inválido del concepto de subprocesos múltiples conduce a una disminución en la eficiencia y los recursos del programa.

Ejemplo de la vida real 

Considere una clase que tiene estudiantes y un maestro les está enseñando a considerar a un maestro como un hilo porque los exámenes de los estudiantes están llegando casi todos los diferentes maestros (Mutlthreads) intentan enseñar lo más posible, por lo que están enseñando al azar uno por uno para completar el plan de estudios lo antes posible. 

Esto podría reducir el deber de los profesores, es decir, hilos para completar su tarea, pero la carga de los estudiantes aumentará demasiado. Para hacer frente a esta situación, tenemos que sincronizar el tiempo de los profesores, es decir, los hilos para que se pueda reducir la confusión entre los estudiantes. De manera similar, en Java podemos sincronizar los subprocesos para acceder a los recursos particulares (funciones) significa bloquear los recursos para que solo un recurso pueda acceder a ellos a la vez. En este artículo, discutiremos cómo verificar si el hilo tiene un bloqueo en un objeto particular en Java o no.

El método holdLock() se usa para verificar el bloqueo en el objeto particular durante el tiempo de ejecución del programa Java

Parámetros: este método toma la referencia/objeto de la clase en la que queremos verificar si el bloqueo está presente en los hilos o no.

Tipo de devolución: este método devuelve parámetros booleanos, es decir, verdadero o falso. Verdadero significa bloqueo de monitor disponible en el objeto actual.

Ejemplo

Java

// Java Program Illustrating How to Check if a Thread Holds
// Lock on a Particular Object
 
// Importing the libraries
import java.io.*;
import java.util.*;
 
// Main class
class GFG {
 
    // Creating the constructor
    GFG()
    {
 
        // Checking the status of the lock on the object
        System.out.println(Thread.holdsLock(this));
 
        // Synchronizing the thread
        synchronized (this)
        {
 
            // Checking the status of the lock on the object
            // using holdsLock() method over
            // same thread using this keyword
            System.out.println(Thread.holdsLock(this));
        }
    }
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating a Thread class object
        Thread ob = new Thread() {
            // run() method for this thread which
            // is invoked as start() method is invoked
            public void run()
            {
 
                // Creating a class object
                // inside the run() methodof the class
                GFG ob1 = new GFG();
            }
        };
 
        // Starting the thread with
        // the help of start() method
        ob.start();
    }
}
Producción

false
true

Publicación traducida automáticamente

Artículo escrito por zack_aayush y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *