¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)
Simular la descarga de archivos en distintos hilos en Java
Anuncios
Publicidad

Simular la descarga de archivos en distintos hilos en Java

En este ejercicio tendremos dos hilos; cada uno simulará la descarga de un archivo. Cada hilo imprimirá mensajes como: "Descargando archivo ... (progreso)", con pausas de 500 milisegundos para simular el tiempo de descarga. El bucle for irá de 5 hacia 0. De esta manera, podemos observar cómo varios procesos pueden ejecutarse al mismo tiempo.

📎Cómo crear e iniciar hilos en Java con Thread

Explicación paso a paso

Creación de hilos con Thread

Has creado dos hilos (fichero_Uno y fichero_Dos) usando expresiones lambda, lo que simplifica mucho el código frente a usar clases que extiendan Thread o implementen Runnable.

Simulación de descarga

Cada hilo ejecuta un bucle for que va desde 5 hasta 0.

Se imprime el progreso con System.out.println.

Se usa Thread.sleep(500) para simular que cada "paso" tarda medio segundo.

Finalización de descarga

Después del bucle, cada hilo imprime un mensaje de éxito independiente.

Como los hilos se ejecutan en paralelo, el orden de ejecución de las líneas puede variar entre ejecuciones (esto es el multihilo real en acción).

Salida esperada

El orden nunca es exactamente el mismo, porque depende de cómo el planificador de la JVM asigne CPU a cada hilo.

A veces fichero 1 puede adelantarse, a veces fichero 2. Eso es lo natural y lo hace interesante.

public class DescargarDeArchivo {

public static void main(String[] args) {
    // Primer hilo llamado fichero Uno.
    // Para cada hilo se ejecuta un bucle for.
    // Sleep simula una pausa de 500 milisegundos con cada iteracción.
    // Si existe un error será capturado y lanzará un error.
    // Finalmente, se imprime el archivo ha sido descargado con éxito.
    Thread fichero_Uno = new Thread (() -> 
    {for (int i = 5; i >= 0; i--) 
    {
        System.out.println("Descargando el fichero 1....." + i + "#");  

        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
        System.out.println("El archivo 1 ha sido descargado con éxito.....");

    });

    Thread fichero_Dos = new Thread(() -> 
    {
        for (int i = 5; i >= 0; i--) {
            System.out.println("Descargando el fichero 2....." + i + "#");

            try {
                Thread.sleep(500);
            } catch (InterruptedException e) 
            {
                e.printStackTrace();
            }
        }
        System.out.println("El archivo 2 ha sido descargado con éxito.....");
    });

fichero_Uno.start();
fichero_Dos.start();

// Si añadimos join(), el main espera y no continúa hasta que ese hilo haya terminado.

    try {
        fichero_Uno.join();
        fichero_Dos.join();
    } catch (InterruptedException e) 
    {
        e.printStackTrace();
    }

}

}

// salida:
//Descargando el fichero 1…..5#
//Descargando el fichero 2…..5#
//Descargando el fichero 2…..4#
//Descargando el fichero 1…..4#
//Descargando el fichero 2…..3#
//Descargando el fichero 1…..3#
//Descargando el fichero 2…..2#
//Descargando el fichero 1…..2#
//Descargando el fichero 2…..1#
//Descargando el fichero 1…..1#
//Descargando el fichero 2…..0#
//Descargando el fichero 1…..0#
//El archivo 2 ha sido descargado con éxito…..
//El archivo 1 ha sido descargado con éxito…..

Simular la descarga de archivos en distintos hilos en Java
Simular la descarga de archivos en distintos hilos en Java

Seguir leyendo:

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)

Deja una respuesta

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)
error: Content is protected !!
Hablemos de informática
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.