2016-03-11 1 views
2

Il y a déjà un similar question sur SO, cependant, la solution ne fonctionne que si la boucle ne génère aucune sortie. Si à la place, j'essaie de lancer while(true) System.out.print(1); et de taper Ctrl + C ensuite, ce qui se passe est que le terminal se bloque et il semble qu'il n'y ait aucun moyen de le tuer. Est-ce que tout peut être fait en plus de fermer et de rouvrir le terminal?Tuer une boucle infinie gèle le terminal

+1

Bonne question. La chose étrange est que lorsque vous essayez d'imprimer "Bonjour", parfois en utilisant CTRL + C tue la boucle, parfois ce n'est pas le cas. – Maroun

+0

dans un autre terminal, vous pouvez tuer le processus. – Taylor

+0

Depuis la question a vieilli maintenant. Pourtant, essayer la même chose sur la dernière version 9.0.1 jshell 'Ctrl + C' fonctionne pour moi. – nullpointer

Répondre

-1

Vous ne devriez pas avoir une boucle comme ça. Vous devriez publierai un peu de temps à la CPU en dormant le fil actif pendant un certain temps avec

while (true) { 
    // Do your processing stuff here. 

    // This line ensures that the active thread releases some time 
    // to the CPU, allowing closure of the application via Ctrl-C. 
    Thread.sleep(numberOfMillisecondsToSleepFor); 
} 

Vous pouvez tuer le processus, avec votre code existant, d'un autre terminal kill, mais vous devriez vraiment empêchez que CPU scénario de verrouillage en codant la boucle correctement pour répondre à cela.

+2

Cela ne répond pas vraiment à la question. Avoir une boucle vide ne provoque pas la même chose. – Maroun

+0

Une boucle infinie 'while (true)' est mauvaise et ne devrait pas être faite à moins qu'un peu de temps soit libéré au CPU. Sa boucle ci-dessus ne fait pas ça. Et c'est pourquoi il ne peut pas tuer le processus facilement. Le problème est son code de boucle, pas les symptômes suivants de celui-ci. – ManoDestra

+0

Alors, quelle est la différence entre une boucle infinie vide et une boucle infinie avec une instruction d'impression (en termes d'utilisation du processeur)? – Maroun