1. El control de subprocesos es muy común.
2. Los hilos tienen cinco estados: creación, operación, operación, bloqueo y muerte.
Crear: crea un hilo usando el nuevo operador
Runable: después de iniciar un hilo utilizando el método de inicio, el sistema asigna recursos
Estado en ejecución: Ejecutar método para ejecutar el subproceso
Bloqueo: el hilo de ejecución deja de funcionar por alguna razón
Estado de la muerte: termina el hilo
3. Problemas de seguridad de los métodos tradicionales
Los métodos de stop (), suspender (), reanudar (), destruir () y destruir () de Thread ya no se usan porque no son seguros y pueden causar muertos muertos.
4. Cómo controlar el funcionamiento de los hilos
Por ejemplo, si la transferencia de un archivo tarda 10 segundos, permita que se transfiera a un momento determinado y luego continúe hasta que se complete la transferencia. Use el método para implementar Runnable, en primer lugar, la clase ejecutable para la transferencia de archivos
El código es el siguiente:
La copia del código es la siguiente:
Clase pública TreveControltest1 implementos ejecutables
{
privado int porcentaje = 0;
Public void run ()
{
Mientras (verdadero)
{
System.out.println ("Transfer Progress:" + porcentaje + "%");
intentar
{
Thread.sleep (1000);
}
Catch (excepción ex)
{}
porcentaje += 10;
if (porcentaje == 100)
{
System.out.println ("Transferencia completada");
romper;
}
}
}
Public static void main (String [] args)
{
Shichcontroltest1 ft = new SiftControltest1 ();
Hilo th = nuevo hilo (ft);
th.start ();
}
}
5. Ejecute el proceso de simulación de transferencia de archivos de impresión en la consola. Se puede ver que si el objeto de esta clase se ejecuta como un hilo, el bucle While se ejecutará 10 veces y luego saldrá.
Sin embargo, debe pausar el hilo que se ejecuta (como 1 minuto) en un momento determinado (como 5 segundos después), pero no puede usar las funciones relacionadas con el hilo.
Para resolver este problema, los métodos comunes son los siguientes:
1. Cuando sea necesario hacer una pausa, simplemente deje que el método de ejecución del hilo termine para ejecutarse a recursos gratuitos (de hecho, deje que el hilo termine permanentemente)
2. Cuando el hilo necesita continuar, se abrirá un nuevo hilo para continuar funcionando.
¿Cómo hacer que el método de ejecución termine?
6. El código anterior se puede cambiar a lo siguiente:
La copia del código es la siguiente:
Clase pública TreveControltest1 implementos ejecutables
{
privado int porcentaje = 0;
booleano privado isrun = true;
Public void run ()
{
mientras (isrun)
{
System.out.println ("Transfer Progress:" + porcentaje + "%");
intentar
{
Thread.sleep (1000);
}
Catch (excepción ex)
{}
porcentaje += 10;
if (porcentaje == 100)
{
System.out.println ("Transferencia completada");
romper;
}
}
}
Public static void main (String [] args)
{
Shichcontroltest1 ft = new SiftControltest1 ();
Hilo th = nuevo hilo (ft);
th.start ();
intentar
{
Thread.sleep (5000);
} Catch (Exception Ex)
{}
ft.isrun = false;
System.out.println ("Pausa por un minuto");
intentar
{
Thread.sleep (1000*60);
} Catch (Exception Ex)
{}
ft.isrun = true;
th = nuevo hilo (ft);
th.start ();
}
}