Varios métodos para implementar subprocesos múltiples
1. Heredar la clase Thread para crear un hilo
La clase Thread es esencialmente una instancia que implementa la interfaz Runnable y representa una instancia de hilo. La única forma de iniciar un hilo es mediante el método de instancia start() de la clase Thread. El método start() es un método nativo que iniciará un nuevo hilo y ejecutará el método run(). Este método de implementación de subprocesos múltiples es muy simple. Siempre que extienda Thread directamente a través de su propia clase y anule el método run (), puede iniciar un nuevo subproceso y ejecutar su propio método run () definido.
Por ejemplo: public?class?MyThread?extends?Thread?{?
public?void?run()?{ System.out.println("MyThread.run()");?
}?
}?
¿Mi hilo?
¿Mi hilo?mi hilo2?=?new?Mi hilo();?
myThread1.start();?
myThread2.start();
2. Implemente la interfaz Runnable para crear un hilo
Si su clase se ha extendido otra clase no puede extender Thread directamente. En este caso, se puede implementar una interfaz Runnable, como se muestra a continuación:
clase pública?MyThread?extends?OtherClass?implements?Runnable?{? p>public ?{ System.out.println("MyThread.run()");?
}?
}
Para iniciar MyThread , primero debe crear un hilo y pasar su propia instancia de MyThread:
MyThread?myThread?=?new?MyThread() ?
Thread?thread?=? new?Thread( myThread);?
thread.start();
De hecho, cuando el parámetro de destino Runnable se pasa a Thread, el método run() de Thread llamará al destino. run(), consulte el código fuente de JDK: public?void?run()?{
if(target! =?null)?{ target.run();?
}? p>
}
3. Implemente la interfaz Callable y cree subprocesos a través del contenedor FutureTask
La interfaz Callable (también tiene un solo método) es definido de la siguiente manera: ¿pública?interfaz?Callablelt; ()?throws?Exception?{/?TODO?Auto-generated?method?stub
return?null;
}
}}}¿Invocable? oneCallable?=?new?SomeCallablelt;Vgt;();
//Crear un objeto FutureTasklt;Integergt; desde Callablelt;Integergt;:
FutureTasklt;Vgt;?oneTask?= ?new?FutureTasklt;Vgt;(oneCallable);
/Nota: FutureTasklt;Integergt; es un contenedor que acepta Ca
llablelt; Integergt; para crear un objeto FutureTasklt;Vgt, que implementa las interfaces Future y Runnable. //Crea un objeto de hilo desde FutureTasklt;Integergt;: Thread?oneThread?=?new?Thread(oneTask); oneThread.start();
/// En este punto, la creación del hilo ha sido completado.