Presentaremos el contenido del grupo de hilos en detalle más tarde; El contenido de este capítulo incluye:
Introducción al hilo y runnable
Similitudes y diferencias entre hilo y ejecutable
Ejemplo de múltiples lectura para hilo y runnable
Introducción al hilo y runnable
Runnable es una interfaz que solo contiene un método Run (). Su definición es la siguiente:
La copia del código es la siguiente:
interfaz pública runnable {
Public Abstract void run ();
}
El papel de Runnable, implementa múltiples subprocesos. Podemos definir una clase A para implementar la interfaz ejecutable;
El hilo es una clase. Thread mismo implementa la interfaz ejecutable. Su declaración es la siguiente:
implementos de hilo de clase pública runnable {}
El papel del hilo es realizar múltiples subprocesos.
Similitudes y diferencias entre hilo y ejecutable
La similitud entre Thread y Runnable: ambas son "implementaciones multiproceso".
Las diferencias entre hilo y runnable:
Thread es una clase, y Runnable es una interfaz; Sabemos que "una clase solo puede tener una clase principal, pero puede implementar múltiples interfaces", por lo que Runnable tiene una mejor escalabilidad.
Además, Runnable también se puede utilizar para "compartir recursos". Es decir, se crean múltiples hilos basados en un cierto objeto ejecutable, y compartirán recursos en el objeto ejecutable.
¡En general, se recomienda implementar múltiples subprocesos a través de "Runnable"!
Ejemplos de lectura múltiple para hilo y ejecutable
1. Ejemplo de subproceso múltiple de hilo
A continuación podemos comprender mejor el hilo y la ejecución a través de ejemplos, y aprovechar un ejemplo en línea que sea más convincente.
La copia del código es la siguiente:
// código fuente de Java
La clase mythread extiende el hilo {
Ticket privado int = 10;
public void run () {
para (int i = 0; i <20; i ++) {
if (this.ticket> 0) {
System.out.println (this.getName ()+"Ticket Sell: Ticket"+this.ticket--);
}
}
}
};
clase pública Threadtest {
public static void main (string [] args) {
// Iniciar 3 hilos T1, T2, T3;
Mythread t1 = new MyThread ();
MyThread t2 = new MyThread ();
Mythread t3 = new MyThread ();
t1.start ();
t2.start ();
t3.start ();
}
}
Resultados de ejecución:
La copia del código es la siguiente:
Hilo-0 Venta de boletos: Ticket10
Venta de boletos de Thread-1: Ticket10
Hilo-2 Venta de boletos: Ticket10
Venta de boletos de Thread-1: Ticket9
Hilo-0 Venta de boletos: Ticket9
Venta de boletos de Thread-1: Ticket8
Hilo-2 Venta de boletos: Ticket9
Venta de boletos de Thread-1: Ticket7
Hilo-0 Venta de boletos: Ticket8
Venta de boletos de Thread-1: Ticket6
Hilo-2 Venta de boletos: Ticket8
Venta de boletos de Thread-1: Ticket5
Hilo-0 Venta de boletos: Ticket7
Tickets Thread-1: Ticket4
Hilo-2 Venta de boletos: Ticket7
Venta de boletos de Thread-1: Ticket3
Hilo-0 Venta de boletos: Ticket6
Venta de boletos de Thread-1: Ticket2
Hilo-2 Venta de boletos: Ticket6
Descripción de los resultados:
(01) Mythread hereda del hilo, que es un hilo personalizado. Cada mythread vende 10 boletos.
(02) El hilo principal Main crea y comienza 3 hilos infantiles mythread. Cada hilo infantil vende 10 boletos.
2. Ejemplo multiproceso de Runnable
A continuación, modificamos el programa anterior. Implementar una interfaz a través de Runnable, implementando así múltiples subprocesos.
La copia del código es la siguiente:
// código fuente runnabletest.java
implementos mythread de clase runnable {
Ticket privado int = 10;
public void run () {
para (int i = 0; i <20; i ++) {
if (this.ticket> 0) {
System.out.println (Thread.CurrentThread (). GetName ()+"Ticket Sell: Ticket"+this.ticket--);
}
}
}
};
clase pública runnabletest {
public static void main (string [] args) {
Mythread mt = new MyThread ();
// Inicie 3 hilos T1, T2, T3 (comparten un objeto ejecutable), ¡y estos 3 hilos venden un total de 10 boletos!
Hilo t1 = nuevo hilo (mt);
Hilo t2 = nuevo hilo (mt);
Hilo t3 = nuevo hilo (mt);
t1.start ();
t2.start ();
t3.start ();
}
}
Resultados de ejecución:
La copia del código es la siguiente:
Hilo-0 Venta de boletos: Ticket10
Hilo-2 Venta de boletos: Ticket8
Venta de boletos de Thread-1: Ticket9
Hilo-2 Venta de boletos: Ticket6
Hilo-0 Venta de boletos: Ticket7
Boletos de hilo-2: Ticket4
Venta de boletos de Thread-1: Ticket5
Tickets Thread-2: Ticket2
Hilo-0 Venta de boletos: Ticket3
Tickets Thread-1: Ticket1
Descripción de los resultados:
(01) A diferencia del "Mythread herede del hilo";
(02) El hilo principal principal crea e inicia 3 hilos infantiles, y estos 3 hilos infantiles se crean en base a "MT, objeto Runnable". El resultado de la operación es que estos 3 hilos infantiles vendieron un total de 10 boletos. Esto significa que comparten la interfaz mythread.