logo

Subprocesos múltiples en Java

Multithreading es una característica de Java que permite la ejecución simultánea de dos o más partes de un programa para una utilización máxima de la CPU. Cada parte de dicho programa se llama hilo. Entonces, los subprocesos son procesos livianos dentro de un proceso.

Los hilos se pueden crear mediante dos mecanismos:

  1. Ampliando la clase Thread
  2. Implementación de la interfaz ejecutable

Creación de hilos extendiendo la clase Thread
Creamos una clase que extiende la java.lang.Thread clase. Esta clase anula el método run() disponible en la clase Thread. Un hilo comienza su vida dentro del método run(). Creamos un objeto de nuestra nueva clase y llamamos al método start() para iniciar la ejecución de un hilo. Start() invoca el método run() en el objeto Thread.



Java




// Java code for thread creation by extending> // the Thread class> class> MultithreadingDemo>extends> Thread {> >public> void> run()> >{> >try> {> >// Displaying the thread that is running> >System.out.println(> >'Thread '> + Thread.currentThread().getId()> >+>' is running'>);> >}> >catch> (Exception e) {> >// Throwing an exception> >System.out.println(>'Exception is caught'>);> >}> >}> }> // Main Class> public> class> Multithread {> >public> static> void> main(String[] args)> >{> >int> n =>8>;>// Number of threads> >for> (>int> i =>0>; i MultithreadingDemo object = new MultithreadingDemo(); object.start(); } } }>

fmoviez
>

>

Producción

Thread 15 is running Thread 14 is running Thread 16 is running Thread 12 is running Thread 11 is running Thread 13 is running Thread 18 is running Thread 17 is running>

Creación de subprocesos mediante la implementación de la interfaz ejecutable
Creamos una nueva clase que implementa la interfaz java.lang.Runnable y anula el método run(). Luego creamos una instancia de un objeto Thread y llamamos al método start() en este objeto.

Java




// Java code for thread creation by implementing> // the Runnable Interface> class> MultithreadingDemo>implements> Runnable {> >public> void> run()> >{> >try> {> >// Displaying the thread that is running> >System.out.println(> >'Thread '> + Thread.currentThread().getId()> >+>' is running'>);> >}> >catch> (Exception e) {> >// Throwing an exception> >System.out.println(>'Exception is caught'>);> >}> >}> }> // Main Class> class> Multithread {> >public> static> void> main(String[] args)> >{> >int> n =>8>;>// Number of threads> >for> (>int> i =>0>; i Thread object = new Thread(new MultithreadingDemo()); object.start(); } } }>

>

>

Producción

Thread 13 is running Thread 11 is running Thread 12 is running Thread 15 is running Thread 14 is running Thread 18 is running Thread 17 is running Thread 16 is running>

Clase de subproceso frente a interfaz ejecutable

  1. Si ampliamos la clase Thread, nuestra clase no puede extender ninguna otra clase porque Java no admite herencia múltiple. Pero, si implementamos la interfaz Runnable, nuestra clase aún puede extender otras clases base.
  2. Podemos lograr la funcionalidad básica de un hilo extendiendo la clase Thread porque proporciona algunos métodos incorporados como rendimiento(), interrupción(), etc. que no están disponibles en la interfaz Runnable.
  3. El uso de ejecutable le proporcionará un objeto que se puede compartir entre varios subprocesos.