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 :

Arretez moi mon thread :)


Sujet :

Concurrence et multi-thread Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 318
    Par défaut Arretez moi mon thread :)
    le voici :

    A l'intérieure des methodes Cycle() j'utilise testFin() quelques fois pour arreter mon thread quand je clic sur un bouton qui me met ma variable stopThread à true.

    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
     
    public class Histo extends Thread {
     
    	private int nb=0, nbDD=0;
    	private Date date;
    	private GetSNMP gsnmp;
    	private Poster mail;
    	private String[] elements;
    	private Elements el;
    	private PingElement pe; 
    	private String[] tabR;
    	private long idElement;
    	private Locale locale;
    	private DateFormat dateFormat;
    	private DataBas db;
    	private ResultSet rs;
    	private long temps;
    	private boolean stopThread = false;
    private boolean stopThread = false;
     
    	public Histo(String tps)
    	{
    	temps=Long.parseLong(tps);
    	this.start();
    	}
     
    public synchronized void arret() {
       stopThread = true;
    }
     
    public void run() 
    {
    	try {
    	while (true){
     
    		el = new Elements();
    		Cycle("sgsf_mon",0);	//Switch et Routeurs
    		Cycle("sgsf_mon",1);	//Serveurs et Flexnet
    		Cycle("sgsf_mon",2);	//Points acces
    		Thread.sleep(temps*1000);
    	}	
    		}catch( InterruptedException e ) {
    			System.out.println(e);
    		} 
    } 
     
    public synchronized void testFin() throws InterruptedException {
        if( stopThread ) {
        	throw new InterruptedException();
        } 
    }
    Lors d'un clic sur ce bouton , la methode tesFin() s'execute car j'obtiens dans la console : java.lang.InterruptedException. Problème le thread ne s'arrete po

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 318
    Par défaut
    J'aimerai ne pas utiliser une exception pour arreter le thread , mais je ne vois pas comment terminer la fonction run en appuyant sur un bouton qui mettrai une variable a true.

    Mes fonctions cycles sont super longues et je ne doit pas attendre qu'une finisse pour terminer le thread. Je voudrais que mon thread se termine a l'interieur d'une des metodes cycle.

    Merci

  3. #3
    Membre émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Par défaut
    il faut pas faire un .stop ?

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Ou pas, stpo est deprecated, et à bannir de ce fait.
    Pour interrompe un Thread tu peux passer par sa méthode interrupt()

  5. #5
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Citation Envoyé par sozie9372
    il faut pas faire un .stop ?
    la méthode stop() est Deprecated.
    Pour plus d'infos : Why are Thread.stop, Thread.suspend and Thread.resume Deprecated?.

    [edit] grilled [/edit]
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  6. #6
    Membre chevronné Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Par défaut
    rhaaa lalaaa .. la seule vraie méthode pour arrêter 1 Thread (on vous l'a dit et répété) c'est d'arriver à l fin de la méthode run

    quand je clic sur un bouton qui me met ma variable stopThread à true
    Cette variable devrait se trouver dans ton Thread, et ta méthode run devrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public void run() 
    {
    	while (!stopThread){
     
    		el = new Elements();
    		Cycle("sgsf_mon",0);	//Switch et Routeurs
    		Cycle("sgsf_mon",1);	//Serveurs et Flexnet
    		Cycle("sgsf_mon",2);	//Points acces
    		Thread.sleep(temps*1000);
    	}	
    }

  7. #7
    Membre émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Par défaut
    désolé...
    En même temps je n'ai jamais eu à l'utiliser car je suis plutôt adepte de la méthode de NeptuS

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 318
    Par défaut
    Je ne voudrais pas attendre qu'il finisse un while complet avant de s'arreter .
    Chaque Cycle et une opération longues que je voudrais stopper à tous moments

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

Discussions similaires

  1. Besoin d'avis sur mon thread
    Par SanNash dans le forum Concurrence et multi-thread
    Réponses: 1
    Dernier message: 20/06/2006, 11h44
  2. Réponses: 6
    Dernier message: 11/05/2006, 16h00
  3. Réponses: 1
    Dernier message: 16/01/2006, 10h15
  4. j'arrive pas a arreter mon thread d'arriere-plan
    Par ms91fr dans le forum Langage
    Réponses: 6
    Dernier message: 06/06/2003, 21h36

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