Monday, 27 February 2017

Processus Waitforexit Java

J'ai donc lutté contre ce problème depuis un certain temps maintenant et j'ai essayé de nombreuses façons de le réparer, mais je ne peux pas. Fondamentalement, ce que fait mon application appelle un fichier java pour charger une application sur un périphérique. Pendant que son chargement son impression il à une boîte de richtext, alors je voudrais passer au dossier suivant. Le problème que j'ai est que pendant que le premier dossier est chargé, le 2ème essaye de charger quelles affaires cas. J'ai essayé l'attente pour la sortie mais si je fais cela, alors les données de rendement ne sont pas écrites à la boîte de texte riche. Toutes les idées que j'ai essayé mettre l'attente pour la sortie dans de nombreux endroits différents, mais il ne semble pas fonctionner. Deux méthodes ci-dessous écrivent le stdout ou l'erreur dans le champ richtext. Toutes les idées seraient excellentes. Basiquement, j'ai besoin du processus pour quitter, alors je peux continuer à penser le forloop pour charger le fichier suivant. Est-ce que vous recevez n'importe quelle sorte de message d'erreur Il me semble que vos arguments sont - Xmx512M - jar. Manquant un espace après l'option de ligne de commande - jar. Cela pourrait être la cause de juste sortir tout de suite en raison de ne pas être en mesure de comprendre la commande. De plus, comme M. Babcock l'a suggéré, déplacez la méthode loaddPB hors du thread UI et assurez-vous d'envelopper la partie de chargement dans un sémaphore, de cette façon seul un fichier est chargé à la fois et l'interface utilisateur peut continuer à faire ce dont elle a besoin faire. Ndash SPFiredrake Feb 9 12 at 15:29 Soyez averti que ceci est un peu quothackishquot en ce que you39re bloquant toujours le thread UI, mais you39re pompage manuellement les événements à travers la file d'attente de messages. Ce n'est pas une bonne pratique, et la plupart des développeurs recommandera contre elle. La meilleure option est de jeter le code de chargement dans un thread distinct. Ndash SPFiredrake Feb 9 12 at 15: 54 Processus de classe Les méthodes ProcessBuilder. start () et Runtime. exec créent un processus natif et renvoient une instance d'une sous-classe de Process qui peut être utilisée pour contrôler le processus et obtenir des informations à ce sujet. La classe Process fournit des méthodes pour effectuer l'entrée du processus, effectuer la sortie dans le processus, attendre que le processus se termine, vérifier l'état de sortie du processus et détruire (tuer) le processus. Les méthodes qui créent des processus peuvent ne pas fonctionner correctement pour des processus spéciaux sur certaines plates-formes natives, comme les processus de fenêtrage natifs, les processus de démon, les processus Win16DOS sur Microsoft Windows ou les scripts de shell. Par défaut, le sous-processus créé n'a pas son propre terminal ou console. Toutes ses opérations IO standard (c'est-à-dire stdin, stdout, stderr) seront redirigées vers le processus parent, où elles peuvent être accédées via les flux obtenus en utilisant les méthodes getOutputStream (). GetInputStream (). Et getErrorStream (). Le processus parent utilise ces flux pour alimenter les entrées et les sorties du sous-processus. Étant donné que certaines plates-formes natives fournissent uniquement une taille de tampon limitée pour les flux d'entrée et de sortie standard, l'échec d'écrire rapidement le flux d'entrée ou de lire le flux de sortie du sous-processus peut provoquer le blocage du sous-processus, voire l'interblocage. Le sous-processus n'est pas tué lorsqu'il n'y a plus de références à l'objet Process, mais plutôt que le sous-processus continue à s'exécuter de façon asynchrone. Il n'est pas nécessaire qu'un processus représenté par un objet Process s'exécute de façon asynchrone ou simultanée par rapport au processus Java propriétaire de l'objet Process. À partir de 1.5, ProcessBuilder. start () est la meilleure façon de créer un processus. Constructeur Résumé Constructeur et description Résumé de la méthode Modificateur et type Méthode et description Tue le sous-processus. Renvoie la valeur de sortie pour le sous-processus. Renvoie le flux d'entrée connecté à la sortie d'erreur du sous-processus. Renvoie le flux d'entrée connecté à la sortie normale du sous-processus. Renvoie le flux de sortie connecté à l'entrée normale du sous-processus. Cause le thread en cours d'attendre, si nécessaire, jusqu'à ce que le processus représenté par cet objet processus a terminé. Méthodes héritées de la classe java. lang. Object Constructor Detail Méthode Detail getOutputStream Renvoie le flux de sortie connecté à l'entrée normale du sous-processus. La sortie vers le flux est envoyée dans l'entrée standard du processus représenté par cet objet Process. Si l'entrée standard du sous-processus a été redirigée à l'aide de ProcessBuilder. redirectInput, cette méthode renverra un flux de sortie nul. Note d'implémentation: Il est bon que le flux de sortie renvoyé soit mis en mémoire tampon. Renvoie: le flux de sortie connecté à l'entrée normale du sous-processus getInputStream Renvoie le flux d'entrée connecté à la sortie normale du sous-processus. Le flux obtient des données transmises à partir de la sortie standard du processus représenté par cet objet Process. Si la sortie standard du sous-processus a été redirigée à l'aide de ProcessBuilder. redirectOutput, cette méthode renverra un flux d'entrée null. Sinon, si l'erreur standard du sous-processus a été redirigée à l'aide de ProcessBuilder. redirectErrorStream, le flux d'entrée renvoyé par cette méthode recevra la sortie standard fusionnée et l'erreur standard du sous-processus. Note d'implémentation: Il est bon que le flux d'entrée retourné soit mis en mémoire tampon. Renvoie: le flux d'entrée connecté à la sortie normale du sous-processus getErrorStream Renvoie le flux d'entrée connecté à la sortie d'erreur du sous-processus. Le flux obtient des données transmises à partir de la sortie d'erreur du processus représenté par cet objet Process. Note d'implémentation: Il est bon que le flux d'entrée retourné soit mis en mémoire tampon. Renvoie: le flux d'entrée connecté à la sortie d'erreur du sous-processus Permet au thread courant d'attendre, si nécessaire, jusqu'à ce que le processus représenté par cet objet Process ait pris fin. Cette méthode retourne immédiatement si le sous-processus est déjà terminé. Si le sous-processus n'est pas encore terminé, le thread appelant sera bloqué jusqu'à ce que le sous-processus se termine. Renvoie: la valeur de sortie du sous-processus représenté par cet objet Process. Par convention, la valeur 0 indique la terminaison normale. Throws: InterruptedException - si le thread en cours est interrompu par un autre thread pendant qu'il attend, l'attente est terminée et une exception InterruptedException est lancée. Renvoie la valeur de sortie pour le sous-processus. Renvoie: la valeur de sortie du sous-processus représenté par cet objet Process. Par convention, la valeur 0 indique la terminaison normale. Throws: IllegalThreadStateException - si le sous-processus représenté par cet objet Processus n'a pas encore terminé Tue le sous-processus. Le sous-processus représenté par cet objet Processus est terminé par la force. Soumettre un bogue ou une fonctionnalité Pour plus de références API et documentation du développeur, consultez la documentation de Java SE. Cette documentation contient des descriptions plus détaillées, axées sur le développeur, avec des aperçus conceptuels, des définitions de termes, des solutions de contournement et des exemples de code de travail. Copyright x00a9 1993, 2016, Oracle et ses filiales. Tous les droits sont réservés. L'utilisation est soumise aux termes de la licence. Voir aussi le document sur la politique de redistribution . Les scripts de cette page permettent de suivre le trafic de la page Web, mais ne modifient en rien le contenu.


No comments:

Post a Comment