Un thread (hilo) es una línea independiente de ejecución dentro de un programa. Un programa Java siempre tiene al menos un hilo: el hilo principal, donde empieza main(). Podemos crear más hilos para que el programa haga varias cosas “a la vez” (concurrencia).
Por ejemplo, un servidor que atiende a varios clientes en paralelo crea un hilo por cada conexión para que no se bloqueen entre sí.
Implementando la interfaz Runnable
package es.cesguiro.threads; public class RunnableThread implements Runnable { @Override public void run() { System.out.println("Task started by " + Thread.currentThread().getName()); } }
Usando una clase Anónima
package es.cesguiro.threads; public class AnonymousThread { public Runnable startThread() { return new Thread(new Runnable() { @Override public void run() { System.out.println("Task started by " + Thread.currentThread().getName()); } }); } }
Con expresiones lambda (Java 8+)
package es.cesguiro.threads; public class LambdaThread { public Runnable startThread() { return () -> System.out.println("Task started by " + Thread.currentThread().getName()); } }
package es.cesguiro.threads; public class Main { public static void main(String[] args) { Thread thread1 = new Thread(new RunnableThread(), "RunnableThread"); Thread thread2 = new Thread(new AnonymousThread().startThread(), "AnonymousThread"); Thread thread3 = new Thread(new LambdaThread().startThread(), "LambdaThread"); thread1.start(); thread2.start(); thread3.start(); Runnable loopTask = () -> { for (int i = 1; i <= 10; i++) { System.out.println(Thread.currentThread().getName() + ": " + i); try { Thread.sleep(1000); // Sleep for 1 second } catch (InterruptedException e) { System.err.println("Thread interrupted: " + e.getMessage()); } } }; Thread thread4 = new Thread(loopTask, "LoopThread-1"); Thread thread5 = new Thread(loopTask, "LoopThread-2"); thread4.start(); thread5.start(); } }
Los hilos comparten memoria → cuidado con las variables compartidas (condiciones de carrera).
Demasiados hilos pueden saturar CPU/memoria (más adelante veremos thread pools).