Implementación de subprocesos
En Java, el método Ejecutar indica la tarea que se completará para los hilos.
1. Heredar la clase de subprocesos y anular su método de ejecución. Luego cree un objeto de esta subclase y llame al método Start ().
2. Defina la clase que implementa la interfaz ejecutable y luego implementa el método Ejecutar. El objeto de esta clase se pasa como un parámetro al crear hilo, y luego se llama al método Start ().
La clase de subprocesos es una clase especialmente utilizada para crear hilos y operar en hilos. Cuando una clase hereda la clase de hilo, la clase se llama clase de hilo.
Ambos métodos requieren la ejecución del método Start () del hilo para asignar los recursos del sistema necesarios al subproceso, programar el subproceso para ejecutar y ejecutar el método Run () del subproceso.
El método Start () es la única forma de iniciar el hilo. El método Start () primero prepara los recursos del sistema para la ejecución del hilo y luego llama al método run (). Un hilo solo se puede iniciar una vez, y es ilegal comenzar de nuevo.
El trabajo del hilo se pone en el método Run (), es decir, todas las cosas que queremos que haga este hilo. Por defecto, el método run () no hace nada.
En aplicaciones específicas, qué método construir hilos depende de la situación. En general, cuando un hilo ha heredado otra clase, debe construirse de la segunda manera, es decir, implementar la interfaz ejecutable.
Aquí hay dos ejemplos para ilustrar dos métodos de implementación de hilos.
Public Class Threadt1 {public static void main (string [] args) {thread1 thread1 = new Thread1 (); {@Override public void run () {for (int i = 0; i <100; ++ i) {System.out.println ("Hello World:" +I); public void run () {for (int i = 0; i <100; ++ i) {System.out.println ("Bienvenido:" +I); ] args) {// Otro método de implementación de hilos también puede usar la clase interna anónima Thread1 = new Hread (new MyThread1 ()); .Start (); }}} class myThread2 implementos runnables {@Override public void run () {for (int i = 0; i <100; ++ i) {System.out.println ("Bienvenido:" +i);
Análisis de clase de hilo
La clase de hilo también implementa la interfaz ejecutable, por lo que implementa el método run () en la interfaz.
Al generar un objeto de subproceso, si no se especifica ningún nombre para él, el nombre del objeto de subproceso será en forma de: número de subproceso, que es un número aumentado automáticamente y es compartido por todos los objetos de subprocesos porque es un miembro estático variables.
Al usar el primer método (la forma de heredar el hilo) para generar objetos de subprocesos, necesitamos anular el método run () porque el método run () de la clase de hilo no hace nada en este momento.
Al usar el segundo método (la forma de implementar la interfaz runnable) para generar objetos de subprocesos, necesitamos implementar el método run () de la interfaz ejecutable y luego usar el nuevo hilo (nuevo myrunnableclass ()) para generar objetos de subprocesos (MyRunRunnableClass ha implementado runnable) En este momento, el método run () del objeto de subproceso llamará al método run () de myrunnableclass.
Hilo de parada
La desaparición de un hilo no se puede hacer llamando al comando stop (), pero deje que el método Run () termine naturalmente. El método stop () es inseguro y ha sido abandonado.
Manera recomendada de detener los hilos: Establezca una variable de indicador, que es un bucle en el método run ().
Como se muestra en el ejemplo del código:
Public ClassThreadTest {MyThreadClass R = New MyThreadClass (); MyThreadClass implementa Runnable {private Boolean Flag = True;
Ciclo de vida de hilo y ciclo de vida prioritario del hilo
Ciclo de vida del hilo: el proceso desde la creación hasta la desaparición de un hilo.
La siguiente figura muestra los diversos estados en el ciclo de vida del hilo:
El ciclo de vida de un hilo se puede dividir en cuatro estados:
1. Crear estado:
Cuando se crea un nuevo objeto de subproceso con el nuevo operador, el hilo está en el estado creado.
Un hilo en el estado creado es solo un objeto de hilo vacío y el sistema no le asigna recursos.
2. Estado de Runable:
El método Start () del hilo de ejecución asignará los recursos del sistema necesarios al hilo, organizará su operación y llamará al método del cuerpo de subproceso - run (), para que el hilo esté en un estado ejecutable (ejecutable).
Este estado no es un estado en ejecución, porque el hilo puede no funcionar en realidad.
3. No ejecutar estado:
Cuando ocurran los siguientes eventos, el hilo en el estado en ejecución se transferirá al estado innecesable:
Se llamó al método Sleep ();
El hilo llama al método Wait () para esperar a que se cumplan las condiciones específicas;
Bloqueo de entrada/salida de subprocesos.
Regrese al estado ejecutable:
El hilo en el estado de sueño ha pasado después del tiempo especificado;
Si el hilo está esperando una determinada condición, otro objeto debe notificar al cambio de condición de hilo de espera a través del método notify () o notifyall ();
Si el hilo está bloqueado debido a la entrada y la salida, espere a que se complete la entrada y la salida.
4. Estado de la muerte:
Cuando se ejecuta el método Run () del hilo, el hilo muere naturalmente.
Prioridad del hilo
1. Prioridad y configuración de hilos
La prioridad de los hilos es facilitar la programación del sistema de hilos en un entorno multiproceso, y los hilos con alta prioridad se ejecutarán primero.
La configuración de prioridad de un hilo sigue los siguientes principios:
Cuando se crea un hilo, el niño hereda la prioridad de los padres.
Después de que se crea el hilo, la prioridad se puede cambiar llamando al método setpriority ().
La prioridad del hilo es un entero positivo entre 1-10.
1- min_priority
10-max_priority
5-Norm_priority
Si no se establece nada, el valor predeterminado es 5.
Sin embargo, la prioridad del hilo no puede determinarse mediante la orden de ejecución del hilo.
2. Estrategia de programación de hilos
El planificador de subprocesos selecciona el hilo con la prioridad más alta para ejecutar. Sin embargo, si ocurre lo siguiente, el hilo termina:
El método de rendimiento () se llama en el cuerpo del hilo, cediendo la ocupación de la CPU.
El método Sleep () se llama en el cuerpo del hilo para que el hilo se duerma.
Los hilos están bloqueados debido a las operaciones de E/S.
Aparece otro hilo con mayor prioridad.
En un sistema que admite rodajas de tiempo, las rodajas de tiempo del hilo se agotan.