[JAVA]: Arrêter une thread en train de lire?

: Arrêter une thread en train de lire? [JAVA] - Programmation

Marsh Posté le 23-03-2002 à 16:45:20    

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]

Reply

Marsh Posté le 23-03-2002 à 16:45:20   

Reply

Marsh Posté le 23-03-2002 à 17:13:40    

C'est bon, en fait il me suffit de taper 'entrée' après control-d. Bizarre, ça...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed