Antes de presentar el concepto de hilo , no pudimos ejecutar más de una tarea en paralelo. Era un inconveniente, y para eliminar ese inconveniente, Concepto de hilo Fue presentado.
A Hilo Es un proceso muy liviano, o podemos decir la parte más pequeña del proceso que permite que un programa funcione de manera más eficiente al ejecutar múltiples tareas simultáneamente.
1 millón cuantos 0
Para realizar tareas complicadas en segundo plano, utilizamos el Concepto de hilo en Java . Todas las tareas se ejecutan sin afectar el programa principal. En un programa o proceso, todos los subprocesos tienen su propia ruta de ejecución separada, por lo que cada subproceso de un proceso es independiente.
Otro beneficio de usar hilo es que si un hilo recibe una excepción o un error en el momento de su ejecución, no afecta la ejecución de los demás hilos. Todos los hilos comparten una memoria común y tienen su propia pila, variables locales y contador de programa. Cuando se ejecutan varios subprocesos en paralelo al mismo tiempo, este proceso se conoce como subprocesos múltiples .
De forma sencilla, un Thread es un:
- Característica a través de la cual podemos realizar múltiples actividades dentro de un solo proceso.
- Proceso ligero.
- Serie de declaraciones ejecutadas.
- Secuencia anidada de llamadas a métodos.
Modelo de hilo
Al igual que un proceso, un hilo existe en varios estados. Estos estados son los siguientes:
1) Nuevo (Listo para funcionar)
Hay un hilo en Nuevo cuando llega el tiempo de CPU.
2) corriendo
Hay un hilo en un corriendo indicar cuándo se encuentra en ejecución.
3) suspendido
Hay un hilo en el Suspendido estado cuando está temporalmente inactivo o en ejecución.
4) Bloqueado
Hay un hilo en el Obstruido estado cuando está esperando recursos.
5) Terminado
Un hilo entra en este estado cuando, en un momento dado, detiene su ejecución inmediatamente.
Creando hilo
Un hilo se crea ya sea 'creando o implementando' el Interfaz ejecutable o ampliando el Clase de hilo . Estas son las dos únicas formas en que podemos crear un hilo.
Profundicemos en los detalles de estas dos formas de crear un hilo:
lanzar manejo de excepciones en java
Clase de hilo
A Clase de hilo Tiene varios métodos y constructores que nos permiten realizar varias operaciones en un hilo. La clase Thread extiende el Objeto clase. El Objeto clase implementa el Ejecutable interfaz. La clase thread tiene los siguientes constructores que se utilizan para realizar diversas operaciones.
Interfaz ejecutable (método ejecutar())
La interfaz Runnable debe ser implementada por esa clase cuyas instancias están destinadas a ser ejecutadas por un subproceso. La interfaz ejecutable nos da la correr() Método para realizar una acción para el hilo.
método inicio()
El método se utiliza para iniciar un hilo que hemos creado recientemente. Comienza un nuevo hilo con una nueva pila de llamadas. Después de ejecutar el comenzar() método, el hilo cambia el estado de Nuevo a Ejecutable. Ejecuta el método ejecutar() cuando el hilo llega al momento correcto para ejecutarlo.
Tomemos un ejemplo para entender cómo podemos crear un Java hilo extendiendo la clase Thread:
ThreadExample1.java
// Implementing runnable interface by extending Thread class public class ThreadExample1 extends Thread { // run() method to perform action for thread. public void run() { int a= 10; int b=12; int result = a+b; System.out.println('Thread started running..'); System.out.println('Sum of two numbers is: '+ result); } public static void main( String args[] ) { // Creating instance of the class extend Thread class ThreadExample1 t1 = new ThreadExample1(); //calling start method to execute the run() method of the Thread class t1.start(); } }
Producción:
Crear hilo implementando la interfaz ejecutable
En Java, también podemos crear un hilo implementando la interfaz ejecutable. La interfaz ejecutable nos proporciona tanto el método run() como el método start().
Tomemos un ejemplo para comprender cómo podemos crear, iniciar y ejecutar el hilo utilizando la interfaz ejecutable.
diferencia en Python
ThreadExample2.java
class NewThread implements Runnable { String name; Thread thread; NewThread (String name){ this.name = name; thread = new Thread(this, name); System.out.println( 'A New thread: ' + thread+ 'is created ' ); thread.start(); } public void run() { try { for(int j = 5; j > 0; j--) { System.out.println(name + ': ' + j); Thread.sleep(1000); } }catch (InterruptedException e) { System.out.println(name + ' thread Interrupted'); } System.out.println(name + ' thread exiting.'); } } class ThreadExample2 { public static void main(String args[]) { new NewThread('1st'); new NewThread('2nd'); new NewThread('3rd'); try { Thread.sleep(8000); } catch (InterruptedException excetion) { System.out.println('Inturruption occurs in Main Thread'); } System.out.println('We are exiting from Main Thread'); } }
Producción:
En el ejemplo anterior, realizamos el subproceso múltiple implementando la interfaz ejecutable. Para obtener más información sobre subprocesos múltiples, haga clic aquí .