es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Una pregunta sobre thread.Sleep(), thread.Join()

Hay un código que se muestra a continuación, la pregunta es: ¿qué jugador(es) se escribirán primero en la terminal?

Puedo entender fácilmente la función de Start() y Join(), que significa comenzar inmediatamente el hilo. Sin embargo, no estoy seguro de qué jugadores se escribirán primero en la terminal. Mi entendimiento es que podría ser threadE, threadC, threadA, no he logrado encontrar las respuestas correctas.

¿Alguien tiene alguna pista? Gracias.

class Player
{
    private readonly string etiqueta;

    public Player(string nombre)
    {
        this.etiqueta = nombre;
    }

    public void Correr()
    {
        Thread.Sleep(100);
        Console.Write(etiqueta + ",");
    }

    static void Main(string[] args)
    {
        Thread threadA = new Thread(new Player("A").Correr);
        Thread threadB = new Thread(new Player("B").Correr);
        Thread threadC = new Thread(new Player("C").Correr);
        Thread threadD = new Thread(new Player("D").Correr);
        Thread threadE = new Thread(new Player("E").Correr);


        threadE.Start(); 
        threadC.Start();
        threadA.Start();
        threadC.Join();  
        threadB.Start();
        threadA.Join();
        threadD.Start();
        threadB.Join();
        threadD.Join();
        threadE.Join();
    }
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Basándonos en el código, el primer jugador que se mostrará en la terminal será “E”, seguido de “C”, luego “A”, “B” y finalmente “D”. Esto se debe a que los hilos se están iniciando en un orden específico (E, C, A, B, D) y luego se están uniendo en un orden específico (C, A, B, D, E), lo que provoca que sus salidas se impriman en el orden en que completan su ejecución.

Comments are closed.