/ / Múltiples subprocesos en la declaración de subprocesos java - Java, multithreading

Múltiples subprocesos en la declaración de subprocesos de Java - Java, multihilo

Estas son algunas líneas de mi código:

class abc {
public static void main(String br[]){
Age age=new Age(21);
Thread th1=new Man("Thread1",age);
Thread th2=new Woman("Thread2",age);
th1.start();
th2.start();
}
}

class Age
{
int age;
Age(int a) {
this.age=a;
}
}

class Man extends Thread()
{
Age age;
Man(String name,Age age)
{
super(name);
this.age=age;
}
}

La clase de mujer es exactamente la misma.

Tengo tres clases de edad, hombre, mujer. ¿Alguien puede explicar lo que está sucediendo en la segunda y tercera línea? Quiero decir, ¿cuál es el objeto llamante de la clase? ¿Cuál es el objeto llamante de cada hilo? Además, si uso this en mi Man clase, a qué objeto se referirá: el objeto llamante o la age 21?

Respuestas

2 para la respuesta № 1

Tu código no tiene sentido. Está construyendo una instancia de la clase Man, que es una subclase de Thread, pero no pasa ninguna instancia de Runnable al constructor de Thread y no anula la run() método de Thread en tus Man clase. Esto significa que cuando inicie el subproceso, ejecutará el vacío predeterminado run() método de Thread Clase, que no hace nada y vuelve inmediatamente.


0 para la respuesta № 2

th1.start () y th2.Las llamadas de inicio () ponen el hilo en la cola "LISTO PARA EJECUTARSE", cuando el hilo tiene la posibilidad de que se mueva de "LISTO PARA EJECUTARSE" a "EJECUTIVO" (es decir, se ejecuta en la memoria) y esto es cuando el método run () de la clase se llama.

Diferentes JVM tienen diferentes estrategias para poner hilos en estado RUNNABLE. También basado en la implementación del método run (), el hilo se reajusta en la memoria o se retira o finaliza.

Los objetos de llamada de los métodos start () son la instancia de Thread, en su caso si th1 y th2.