Lorsque vous rencontrez un thread de longue durée qui doit être arrêté en cours d'exécution, il est crucial de le faire gracieusement pour éviter des conséquences imprévisibles .
Pour y parvenir, une approche courante consiste à introduire une variable de contrôle dans la méthode run() du thread. Cette variable, généralement un indicateur booléen, agit comme une sentinelle pour signaler la demande de terminaison.
Considérez l'exemple suivant :
class MyThread extends Thread { volatile boolean finished = false; public void stopMe() { finished = true; } @Override public void run() { while (!finished) { // Perform the necessary actions } } }
À partir du thread principal, vous pouvez interrompre gracieusement l'exécution en appeler la méthode stopMe() :
MyThread myThread = new MyThread(); myThread.start(); // Wait some time to simulate work Thread.sleep(500); myThread.stopMe();
Auparavant, Java avait une méthode stop(), mais elle a été déclarée dangereuse en raison de son potentiel de corruption du l'état du thread et déverrouiller les verrous acquis. Par conséquent, l'utilisation de l'approche des variables de contrôle est la méthode recommandée pour garantir une terminaison de thread propre et contrôlée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!