IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Concurrence et multi-thread Java Discussion :

[Thread][socket]Problème de fermeture d'un thread [FAQ]


Sujet :

Concurrence et multi-thread Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 95
    Points : 47
    Points
    47
    Par défaut [Thread][socket]Problème de fermeture d'un thread
    Bonour tout le monde,

    Il y a peu de temps j'ai demandé comment fermer un thread, on ma redirigé vers la faq mais malheureusement je n'arrive pas à le faire. Bien sur j'ai essayé d'autre méthode mais c'est pareil.
    Je suis débutant en Java.
    Voici mon dernier essaie (je le trouvais pas mal mais ça ne fonctionne pas).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.net.*;
     
    public class inter_client extends JFrame
    {
    ...
    private boolean fin= true;
    //voici le thread de connexion a un serveur.
    public class threadconnex extends Thread
    	{
    		public void run()
    		{
    		boolean connexionEnCours = true;
    		try
    		{
    			BufferedReader entrée = new BufferedReader(new InputStreamReader(conexion.getInputStream()));
    			PrintWriter sortie = new PrintWriter(conexion.getOutputStream(), true);
    			sortie.println("Client connecté\n");
    			while(connexionEnCours)
    			{
    				connexionEnCours = fin;
    				String ligne = entrée.readLine();
    				panneau.append(ligne);
     
    			}
    			panneau.append("\nfermeture connexion\n");
    			sortie.println("Client deconnecté\n");
    			conexion.close();
    		}
    		catch(IOException ioe)
    		{
    			panneau.append("\nerreur 11 " + ioe);
    		}
    	}
    	}
    //méthode déclencher par clic de souris en interface graphique
    public class lance_conex implements ActionListener
    	{
    		public void actionPerformed(ActionEvent ea)
    		{
    			try{
    				conexion = new Socket("meda.homelinux.com", 1234);
    				panneau.append("Connexion au serveur établie\n");
    				t1 = new threadconnex();
    				t1.start();
    				lancer.setEnabled(false);
    				arreter.setEnabled(true);
    			}
    			catch(IOException ioe)
    			{
     
    			}
    		}
    	}
    //voici la méthode pour fermer le thread, il change la valeur du booléen.
    //méthode déclencher par clic de souris en interface graphique
    public class arrete_conex implements ActionListener
    	{
    		public void actionPerformed(ActionEvent ace)
    		{
    				fin = false;
    				conexion = null;
    				chat.setEnabled(false);
    				arreter.setEnabled(false);
    				lancer.setEnabled(true);
    		}
    	}
    Donc en fait la je changeais la valeur d'un booléen pour terminer la boucle.

    merci pour votre aide

  2. #2
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    t'as essayer la méthode close() ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    As-tu des erreurs lors de la compilation ou de l'execution ?
    Si oui, quelle sont ces erreurs ?

    Au passage, pour pouvoir fermer une thread il faut en être le "propriétaire".

    La méthode pour arrêter une thread est interrupt().

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 95
    Points : 47
    Points
    47
    Par défaut
    Pour le socket j'ai déjà mis un close
    Je n'ai aucune erreur ni compilation ni execution. Le problème c'est juste que cela nefai rien.
    Je ne sais pas comment fonctionne la méthode interrupt(); et de quelle manière elle ferme le thread.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Je viens de voir cet article, il explique très clairement comment arreter une thread.

    http://java.developpez.com/faq/java/...HREAD_terminer

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème d'affichage dans un thread
    Par innosang dans le forum POSIX
    Réponses: 8
    Dernier message: 20/12/2006, 20h40
  2. Librairie OO et portable pour RegExp, Thread, Sockets, etc..
    Par Swoög dans le forum Bibliothèques
    Réponses: 29
    Dernier message: 27/05/2006, 12h29
  3. Réponses: 11
    Dernier message: 14/02/2006, 00h26
  4. [C#] - Problème sur fermeture d'un thread
    Par Erakis dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/01/2006, 01h22
  5. thread, socket, Accept, Receive
    Par lacousine dans le forum MFC
    Réponses: 4
    Dernier message: 20/04/2005, 00h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo