Maison >Java >javaDidacticiel >Comment interrompre gracieusement un appel bloquant ServerSocket.accept() en Java ?
Interruption de l'appel bloquant ServerSocket.accept()
Dans le paradigme de réseau Java, la nature bloquante de la méthode ServerSocket.accept() peut gêner l'exécution du programme lorsqu'il est nécessaire de répondre à des événements externes. Lorsque le thread principal entre dans une boucle while(écoute) appelant continuellement accept() pour accepter de nouvelles connexions client, il devient difficile d'interrompre ce processus et de répondre aux commandes administratives.
La classe ServerSocket ne fournit aucune valeur intrinsèque. mécanisme pour interrompre la méthode accept(). Cependant, une solution à ce problème réside dans l'exploitation du ServerSocketChannel sous-jacent associé à l'objet ServerSocket. La classe ServerSocketChannel propose une méthode close() qui, lorsqu'elle est invoquée depuis un autre thread, termine gracieusement l'appel accept() en cours. L'exception, SocketException, est ensuite levée dans la méthode accept() et peut être gérée de manière appropriée dans le thread principal, lui permettant de répondre à la commande reçue.
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!