lecture de buffer qui bloque - Java - Programmation
Marsh Posté le 06-10-2005 à 13:05:52
Regarde du côté des IO non bloquant(e)s (package nio).
Et soigne ton orthographe, stp, c'est pas facile à lire !
Marsh Posté le 06-10-2005 à 13:45:33
en plus ou à la place de ce que dit Sircam, suivant ton architecture, tu peux faire la lecture dans un thread séparé.
et si c'est une interface homme-machine ->swingworker
Marsh Posté le 06-10-2005 à 14:17:04
nraynaud a écrit : en plus ou à la place de ce que dit Sircam, suivant ton architecture, tu peux faire la lecture dans un thread séparé. |
Mais ça ne résoud jamais le pb. Pas moyen de dire au thread de se terminer... ni de le terminer. Ce dernier reste bêtement bloqué. C'est frustrant.
Marsh Posté le 06-10-2005 à 15:14:40
Et meme si un thread c'est pas ce qu'il y a de plus lourd, c'est pas top d'en semer a gauche et a droite
Marsh Posté le 06-10-2005 à 15:21:03
esox_ch a écrit : Et meme si un thread c'est pas ce qu'il y a de plus lourd, c'est pas top d'en semer a gauche et a droite |
Mais non, un petit thread, ça mange pas de pain.
Enfin, pas d'abus.
Marsh Posté le 06-10-2005 à 15:22:18
Oui mais ça commance toujours avec un pti dans les coins, et apres on s'y retrouve plus . D'ailleurs s'il y a une maniere élégante de resoudre le probleme... pourquoi taper dans le gros bourrin pas propre
Marsh Posté le 06-10-2005 à 15:26:16
Elégante ? Sans nio ?
Marsh Posté le 06-10-2005 à 15:27:53
nraynaud a écrit : en plus ou à la place de ce que dit Sircam, suivant ton architecture, tu peux faire la lecture dans un thread séparé. |
esox_ch a écrit : Et meme si un thread c'est pas ce qu'il y a de plus lourd, c'est pas top d'en semer a gauche et a droite |
les IO non bloquantes ne résolvent pas tout.
esox_ch a écrit : Oui mais ça commance toujours avec un pti dans les coins, et apres on s'y retrouve plus . D'ailleurs s'il y a une maniere élégante de resoudre le probleme... pourquoi taper dans le gros bourrin pas propre |
tu sais lire ? J'ai pas dit d'en mettre des centaines.
Marsh Posté le 06-10-2005 à 15:36:57
Non ça je l'ai compris nraynaud
Mais je me suis souvent fait prendre en me disant "Bon ce truc m'emmerde, je l'emferme dans son thread pour qu'il me foutte la paix" et le resultat est pas toujours super ... Donc si on en creer juste 1 comme tu l'as dit, pas de probleme, mais faut faire gaffe a pas considerer ça comme la reponse bouche-trou a tous les problemes
Marsh Posté le 06-10-2005 à 15:39:21
esox_ch a écrit : "Bon ce truc m'emmerde, je l'emferme dans son thread pour qu'il me foutte la paix" |
Sans doute un bon moyen de se prendre un coup de pelle à clous (tm).
Marsh Posté le 06-10-2005 à 15:40:54
Tout a fait Et apres m'en etre pris plusieurs coups bien visés j'ai appris a ne pas considerer les threads comme des bouées de sauvetage
Marsh Posté le 06-10-2005 à 15:44:22
esox_ch a écrit : Tout a fait Et apres m'en etre pris plusieurs coups bien visés j'ai appris a ne pas considerer les threads comme des bouées de sauvetage |
c'est pas une boué de sauvetage, mais si je vois des IO (bloquantes ou non) dans le thread de swing, je mets des coups de pelle, que ce soit clair.
Sauver un fichier, lire une socket etc. ça se fait hors du thread de refraîchissement de l'interface.
Maitenant, la bonne idée ça peut être d'avoir une seule thread "IOworker" qui fait tout, ou, si le besoin est minime d'utiliser un swingworker adhoc pour sauver un fichier.
Marsh Posté le 07-10-2005 à 15:15:13
Merci pour toute ces reponse, mais l'envoie et la reception sur le buffer ce font deja dans un thread à part.
J'ai pas encore eu le temps de regarder l'api nio, je vais voir si une solution ne se trouve pas par la.
Merci
Marsh Posté le 04-10-2005 à 15:07:38
Bonjour
J'utilise un buffer pour lire les données sur une COM RS; mais j'ai un probleme lier à l'apareil distant, mais que j'aimerai regler avec java.
Mon apareil distant fait croire qu'il est prés à envoyer une donné, mais reste muet, ce qui bloque le programme.
Mon programme reste bloqué sur readLine sans que l'on ne puisse rien faire.
La solution a laquelle j'ai pensé, serai d'exécuter readLine pendant un temps determiné, mais je ne sais pas trop comment.
Merci