1. Le contrôle du thread est très courant.
2. Les threads ont cinq états: création, opération, opération, blocage et mort.
Créer: créer un thread à l'aide du nouvel opérateur
Diable: après avoir démarré un thread à l'aide de la méthode de démarrage, le système alloue les ressources
État d'exécution: Exécuter la méthode d'exécution du thread
Blocage: le fil en cours d'exécution cesse de fonctionner pour une raison quelconque
État de la mort: le fil se termine
3. Problèmes de sécurité des méthodes traditionnelles
Les méthodes Stop (), Suspend (), Repume (), Detrère () et Destren () ne sont plus utilisées car elles sont dangereuses et peuvent provoquer des blocages.
4. Comment contrôler le fonctionnement des threads
Par exemple, si le transfert d'un fichier prend 10 secondes, laissez-le transférer à un certain moment, puis continuez jusqu'à la fin du transfert. Utilisez la méthode pour implémenter Runnable, tout d'abord, la classe Runnable pour le transfert de fichiers
Le code est le suivant:
La copie de code est la suivante:
classe publique threadControltest1 implémente Runnable
{
INT PRIME PERCE = 0;
public void run ()
{
Tandis que (vrai)
{
System.out.println ("Transfert Progress:" + pour cent + "%");
essayer
{
Thread.Sleep (1000);
}
Catch (exception ex)
{}
pour cent + = 10;
si (pourcentage == 100)
{
System.out.println ("Transfert terminé");
casser;
}
}
}
public static void main (String [] args)
{
ThreadControltest1 ft = new ThreadControltest1 ();
Thread th = nouveau thread (ft);
Th.start ();
}
}
5. Exécutez le processus de simulation de transfert de fichiers d'impression sur la console. On peut voir que si l'objet de cette classe est exécuté en tant que thread, la boucle While sera exécutée 10 fois puis quitte.
Cependant, vous devez suspendre le fil en cours d'exécution (comme 1 minute) à un certain moment (comme 5 secondes plus tard), mais vous ne pouvez pas utiliser les fonctions connexes du thread.
Pour résoudre ce problème, les méthodes courantes sont les suivantes:
1. Lorsqu'il est nécessaire de faire une pause, laissez simplement la méthode d'exécution du thread se terminer pour s'exécuter vers des ressources gratuites (en fait, laissez le fil se terminer en permanence)
2. Lorsque le fil doit continuer, un nouveau fil sera ouvert pour continuer à fonctionner.
Comment faire fin la méthode d'exécution?
6. Le code ci-dessus peut être modifié par ce qui suit:
La copie de code est la suivante:
classe publique threadControltest1 implémente Runnable
{
INT PRIME PERCE = 0;
booléen privé Isrun = true;
public void run ()
{
tandis que (Isrun)
{
System.out.println ("Transfert Progress:" + pour cent + "%");
essayer
{
Thread.Sleep (1000);
}
Catch (exception ex)
{}
pour cent + = 10;
si (pourcentage == 100)
{
System.out.println ("Transfert terminé");
casser;
}
}
}
public static void main (String [] args)
{
ThreadControltest1 ft = new ThreadControltest1 ();
Thread th = nouveau thread (ft);
Th.start ();
essayer
{
Thread.Sleep (5000);
} catch (exception ex)
{}
ft.isrun = false;
System.out.println ("Pause pour une minute");
essayer
{
Thread.Sleep (1000 * 60);
} catch (exception ex)
{}
ft.isrun = true;
th = nouveau thread (ft);
Th.start ();
}
}