Introducción a las preguntas y respuestas de la entrevista de subprocesos múltiples de Java

Java está en auge en estos días debido a su plataforma independiente. Se puede ejecutar en cualquier lugar y, por lo tanto, se está utilizando ampliamente con diferentes tecnologías futuras. Para estar preparado para ello, el subprocesamiento múltiple es un tema importante que se centra en las entrevistas. Por lo tanto, finalmente ha encontrado el trabajo de sus sueños en el subprocesamiento múltiple de Java, pero se pregunta cómo descifrar la entrevista y cuál podría ser el probable subproceso múltiple de Java Preguntas de entrevista. Cada entrevista es diferente y el alcance de un trabajo también es diferente. Pasemos a través de algunas preguntas importantes de la entrevista de subprocesos múltiples de Java que se pueden formular en las entrevistas de subprocesos múltiples de Java que usted trataría.

A continuación se muestran las principales preguntas y respuestas de la entrevista de subprocesos múltiples de Java

1. ¿Qué es Thread en JAVA y cómo se implementa?

Responder:
Un hilo ayuda a facilitar la multitarea y el procesamiento múltiple dentro de un programa. Utiliza la CPU de manera efectiva y ayuda a mejorar el rendimiento de la aplicación. Java permite al usuario usar múltiples hilos a la vez. Puede ejecutarse en paralelo con otros programas sin interrupciones. Esto ayuda a reducir el tiempo para el proceso. Por ejemplo, si un programa tarda 60 segundos en ejecutarse, podemos usar 6 hilos que nos darán el resultado en 10 segundos.

Java proporciona dos formas de implementar hilos en un programa. La interfaz java.lang.Runnable tiene una instancia java.lang.A subproceso que requiere una tarea para ejecutarse a través de una instancia. La clase Thread ya implementa Runnable, por lo que un usuario puede anular directamente el método run () extendiendo la clase Thread o implementando la interfaz Runnable.

2. ¿Cuándo usar Runnable y cuándo usar Thread en Java?

Responder:
Java no admite múltiples herencias de una clase, pero permite implementar múltiples interfaces a la vez. Por lo tanto, será mejor implementar Runnable que extender la clase Thread.

3. ¿Cómo se diferencia entre un hilo y un proceso?

Responder:
Un hilo es un subconjunto de un proceso. Un proceso puede tener múltiples subprocesos ejecutándose para ello. Los subprocesos pueden ejecutar cualquier parte de un proceso. Un proceso tiene su propia dirección donde se almacena, mientras que el subproceso comparte la dirección del proceso que lo ha creado. Crear un proceso es un proceso agitado, mientras que los hilos se pueden crear fácilmente. Un hilo generalmente se conoce como un proceso ligero. La comunicación entre procesos es difícil, mientras que los hilos pueden comunicarse fácilmente utilizando los métodos Java de wait () y notify (). Los procesos son independientes, por lo tanto, cualquier cambio realizado en el proceso no afecta los procesos secundarios. Por el contrario, si se realizan cambios en un hilo hay posibilidades de que otros hilos puedan verse afectados.

4. ¿Por qué se dice que el comportamiento del hilo es impredecible?

Responder:
La razón de esto es el planificador de subprocesos que maneja la ejecución de subprocesos. El programador puede tener un rendimiento diferente en diferentes plataformas Windows, UNIX, LINUX, etc. Mientras se ejecuta el mismo hilo puede dar diferentes resultados en diferentes plataformas y, a veces, incluso en la misma plataforma. Para resolver esto, un usuario puede crear el mismo objeto Runnable, crear bucles run () en ambos hilos e iniciar ambos hilos juntos. Idealmente, el planificador debería elegir ambos hilos juntos y el rendimiento no debería verse afectado, pero ambos hilos entrarán en bucles de forma anónima.

5. ¿Qué es una variable volátil en Java y cuál es su importancia?

Responder:
Java facilita al usuario compartir variables presentes en diferentes hilos. Una variable volátil actúa como un modificador especial que solo se puede usar por ejemplo, variables. Como esta variable se comparte, habría cambios consistentes con ella. El subproceso debe garantizar que tenga acceso exclusivo a estas variables y que se bloquee la exclusión mutua de las variables compartidas. Asegura que se realizará una escritura antes de cualquier lectura consecuente. El modelo de memoria Java garantiza la consistencia de esta variable. Los métodos volátiles no pueden estar allí, ya que solo se pueden usar en forma de variables.

6. ¿De qué sirve la palabra clave sincronizada? ¿Cuál es la diferencia entre palabras clave sincronizadas y volátiles?

Responder:
La palabra clave sincronizada se usa cuando el propósito es ejecutar solo un hilo a la vez en una sección de código apropiada. Se puede usar para mostrar cuatro tipos de bloques diferentes como se muestra a continuación:

1) Métodos de instancia
2) métodos estáticos
3) Bloques de código dentro de métodos de instancia
4) Bloques de código dentro de métodos estáticos

Se puede declarar como:

Ejemplo de vacío público sincronizado () ()

La diferencia entre la palabra clave volátil y sincronizada es que sincronizado puede usarse con variables y métodos, mientras que volátil no puede usarse con métodos. Las variables volátiles no se almacenan en la memoria caché, las variables sincronizadas se almacenan en la memoria caché. Una variable volátil nunca aterrizará en un punto muerto ya que no requiere obtener ningún bloqueo. Mientras esté en variables sincronizadas, si no se hacen correctamente, puede terminar en un punto muerto.

7. ¿Por qué métodos como wait (), notify () y notify all () están presentes en la clase de objeto y no en la clase Thread?

Responder:
La clase de objeto tiene monitores que permiten que el hilo bloquee un objeto, mientras que Thread no tiene ningún monitor. Cuando se llama a cualquiera de los métodos anteriores, espera a que otro hilo libere el objeto y notifica al monitor llamando a notify () o notifique a todos (). Cuando se llama al método notify (), hace el trabajo de notificar a todos los hilos que están esperando que se libere el objeto. El monitor de la clase de objeto verifica si el objeto está disponible o no. La clase de subprocesos que tiene estos métodos no ayudaría, ya que existen múltiples subprocesos en un objeto y no al revés.

8. Explique la diferencia entre los métodos sleep () y wait ().

Responder:
1) el método sleep () se llama en hilos y no en objetos. Se llama al método Wait () en los objetos.
2) Cuando se llama al método wait (), el monitor mueve el hilo de ejecución al estado de espera. Una vez que un subproceso está en wait (), entonces puede moverse a runnable solo cuando tiene notify () o notifyall () para ese objeto. El planificador cambia el estado después de esto. Mientras está en el método sleep (), el estado cambia a esperar y volverá a ejecutarse solo después de que termine el tiempo de sueño.
3) El método Wait () es parte de la clase java.lang.Object, mientras que sleep () es parte de la clase java.lang.Thread.
4) Wait () siempre se usa con un bloque sincronizado, ya que requiere bloquear un objeto mientras que sleep () se puede usar desde un bloque sincronizado externo.

9. ¿Cómo forzar el inicio de un hilo en Java?

Responder:
En Java, los subprocesos múltiples no pueden forzar el inicio de un subproceso. Solo el planificador de subprocesos puede controlar los subprocesos y no están expuestos a ninguna API para el control.

10. ¿El subproceso deja el bloqueo del objeto cuando se llama a los métodos wait () y sleep ()?

Responder:
Cuando un hilo está en el método sleep (), no deja el bloqueo y pasa al estado de espera. El hilo espera a que termine el tiempo de sueño. Cuando se utiliza el método wait (), el hilo deja el bloqueo del objeto y pasa al estado de espera. Una vez que se llama a notify (), vuelve al estado de ejecución y adquiere el bloqueo.

Artículo recomendado

Esta ha sido una guía para la Lista de preguntas y respuestas de la entrevista de subprocesos múltiples de Java para que el candidato pueda tomar medidas enérgicas contra estas preguntas de la entrevista de subprocesos múltiples de Java fácilmente. También puede consultar los siguientes artículos para obtener más información:

  1. Preguntas de la entrevista para desarrolladores Java: cómo descifrar las 7 preguntas principales
  2. Guía completa para el desarrollo de aplicaciones Java (teoría impresionante)
  3. Preguntas y respuestas de la entrevista de Maven | Superior y más preguntado
  4. 10 preguntas avanzadas de la entrevista AngularJS para experimentados