Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3725 connectés 

 


Dernière réponse
Sujet : [JAVA]: Arrêter une thread en train de lire?
Krueger C'est bon, en fait il me suffit de taper 'entrée' après control-d. Bizarre, ça...

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Krueger C'est bon, en fait il me suffit de taper 'entrée' après control-d. Bizarre, ça...
Krueger Bonjour,      
J'ai une thread qui lit quelque chose jusqu'à ce qu'elle atteigne la fin du flux ou par demande d'une autre thread via une variable volatile (interrupt).      
       
Je ne peux rien faire tant qu'elle est dans la méthode read(). Alors j'ai essayé a méthode available(), mais elle renvoie toujours 0 en fin de flux (dans mon cas control-D sous GNU/Linux).      
       
Voilà mon code actuel:      

Code :
  1. InputStream  in  = getInputStream();
  2. OutputStream out = getOutputStream();
  3.    
  4. byte data[] = new byte[BUFFER_SIZE];
  5. int  length = 0;
  6. try
  7. {
  8.   TEST : for(;;)
  9.   {
  10.     while(in.available() == 0)
  11.     {
  12.       if(interrupt == true)
  13.         break TEST; // demande d'arrêt de la thread    
  14.     }
  15.     if((length = in.read(data)) != -1)
  16.       out.write(data, 0, length);
  17.     else
  18.       break; // atteinte de la fin du flux de lecture    
  19.   }
  20. }
  21. catch(IOException e)
  22. {
  23.   System.err.println("I/O error" );
  24. }

     
Merci d'avance pour votre aide.  
 
PS: J'ai édité plusieurs fois mon post pour le rendre plus clair. Désolé pour ceux qui sont passés avant.

 

[jfdsdjhfuetppo]--Message édité par Krueger--[/jfdsdjhfuetppo]


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)