2012-03-28 9 views
6

La siguiente pregunta fue hecha en una de mi entrevista (algunos años)Java - Llevar el hilo muertos a la vida

¿Cuáles son todas las posibilidades/formas de llevar el hilo muertos a la vida (Runnable State)

He defendido que no hay forma. Pero él me estaba presionando para pensar. ¿Hay alguna opción disponible realmente? ¿O simplemente estaba comprobando mi confianza en mis respuestas?

+0

Supongo que desea el * mismo objeto Thread *, y no crea un nuevo hilo [usando el hilo del constructor (Runnable)] – amit

+0

@amit Sí. Debe ser el mismo objeto –

+0

Por favor, intente recordar qué dijo exactamente el tipo, ya que no está claro si estaba preguntando sobre grupos de hilos o no. –

Respuesta

3

Creo que estaba tratando de hacerte conocer tus conocimientos sobre ThreadPools. El hilo no puede ser revivido como usted dijo, pero al usar grupos de hilos o el marco ejecutor más nuevo podemos reducir la sobrecarga de creación de objetos.

+0

Es posible que haya estado insistiendo sobre esto, pero no responde la pregunta, incluso si él pensó que sí. Los grupos de subprocesos evitan la terminación de sus subprocesos; no los resucitan de entre los muertos. – EJP

5

Estado muerto: Un hilo se puede considerar muerto cuando finaliza su método run(). Si algún hilo entra en este estado, significa que no puede volver a ejecutarse nunca más.

+0

Hmm. Cierto. ¿Hay algún truco disponible para hacerlo posible? –

+0

antes de completar la ejecución, puede hacerlo, pero después de eso, consulte el ciclo de vida http://www.iam.ubc.ca/guides/javatut99/essential/threads/lifecycle.html –

+0

@Siva No, no hay ningún truco para hacerlo posible. . Supongo que el entrevistador en realidad no entendió enhebrar, y estaba pensando en algo como reanudar un hilo suspendido (obsoleto). – Jon

4

Usted puede usar el viejo objeto Thread para crear una nueva, que es más o menos lo mismo:

(new Thread(oldThread)).start(); 
+0

No es lo mismo. Es un objeto nuevo, las dos cosas son completamente diferentes entre sí. – amit

+1

No es posible usar el mismo objeto, por lo que sugerí una alternativa razonable. – Jivings

0

Depende de lo que entendemos por un Estado Muerto. Si tuvieras un hilo que estaba 'durmiendo', en realidad no haría ningún trabajo, por lo que podrías 'revivirlo' y hacerlo continuar funcionando desde este punto en adelante. Aunque el hilo no estaba muerto, estaba dormido, y tú lo devolviste a la vida.

-2

Sí, me hicieron una pregunta similar. Cuando le dije que no, me preguntó si estaba familiarizado con el concepto de Threadpool en caché.

Dijo que los subprocesos se devuelven desde el grupo y dan servicio a múltiples solicitudes, ¿cómo lo hacen si solo se puede iniciar una vez? También me bombardeó con una pregunta similar, como Weblogic usa los mismos hilos para dar servicio a toda la solicitud o sigue creando nuevos hilos para cada solicitud.

Había visto registros weblogic y había visto el hilo 0 que se estaba imprimiendo y realizando múltiples tareas. No estaba seguro de si weblogic creó un nuevo hilo en el grupo con el mismo nombre o si era el mismo hilo, así que intenté cambiar el entrevistador a otra pregunta respondiéndole de una manera que lo alejara de esta pregunta.

respuesta a esta pregunta es, en realidad proporcionan objetos ejecutables a las roscas y no termina por ejemplo:

while(doINeedToKeepRunning()){ 
    if(hasMoreTasks()){ 
     getFirstTask().run();. 
    } 
    else 
    { 
     waitForOtherTasks(); 
    } 
} 

la esperanza que esto responda a su pregunta. Entonces, tales subprocesos no han terminado, solo esperan los objetos ejecutables o invocables.

Sé que esto suena estúpido. Pero esta es la respuesta que están buscando en una entrevista. Vi que Siva hizo esta pregunta en el contexto de una entrevista y supongo que está en INDIA, así que sé exactamente lo que el entrevistador está tratando de hacer después de haberme entrevistado tanto. He intentado todas las demás respuestas pero no se detienen hasta que obtienen esta respuesta. El resto está en siva y la respuesta que él quiere escoger es responderlas. El objetivo de hacer una pregunta sin sentido es confundir al entrevistado y hacerle cambiar su respuesta y poner a prueba su conocimiento en la implementación del conjunto de subprocesos.

Como todos sabemos una vez que termina un hilo, no se puede ejecutar de nuevo. Así que adhiérase a lo que ya sabe. No, nunca se puede volver a comprar un hilo muerto.pero si te bombardean con otras cosas de cómo los hilos de reutilización weblogic les dan la respuesta anterior. El descanso es todo tu deseo.

+0

El entrevistador parece hacer una pregunta y esperar una respuesta a una pregunta diferente. Un hilo que ha terminado no puede ser revivido, punto. Usar un grupo de subprocesos es solo una forma de evitar la terminación, no una forma de revivir. Parece una pregunta singularmente sin sentido en general. – EJP

+0

Sé que esto suena estúpido. Pero esta es la respuesta que están buscando en una entrevista. Vi a Siva hacer esta pregunta en el contexto de una entrevista y sé exactamente lo que el entrevistador en India está tratando de hacer después de haberme entrevistado tanto . He intentado todas las demás respuestas pero no se detienen hasta que obtienen esta respuesta. El resto está en siva y la respuesta que él quiere escoger es responderlas. El objetivo de hacer una pregunta sin sentido es confundir al entrevistado y hacerle cambiar su respuesta y poner a prueba su conocimiento en la implementación del conjunto de subprocesos. Las personas son feas pero a veces cambian su respuesta. –

Cuestiones relacionadas