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

Java Discussion :

Comment arreter un processus avec un bouton


Sujet :

Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Comment arreter un processus avec un bouton
    Bonjour,
    je dispose d'une application web(jsf) qui permet de démarrer un traitement (traiter des lignes dans une base de donnée).une fois la ligne active est traité on passe la valeur traiter=oui. au bout d'un moment je voulais stopper le processus pour le démarrer plus tard mais j'ai pas pu le faire.J'ai ajouté un flag boolean arretSVP= false mais ça n'a pas marché.
    voici mon code:

    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
     
    public class Eleve{
    public static boolean arreteSilTePlait=true;
    //getter and setter
     public void editEleve(Eleve e) {
    demmarerService("seb");
    }
    demmarerService(String txt){
    while (arreteSilTePlait==true)
     
                    { String sql="select id,prenom,nom from "+txt+" where traiter='non'";
     
                    try{
    connection = com.Database.getConnection();
     
                        if(connection !=null && !connection.isClosed()){
                            stmt1= connection.createStatement();
                            rset1= stmt1.executeQuery(sql);
     
                            while(rset1.next() && arreteSilTePlait){
                                id= rset1.getString("id");
    // traitement et passer traiter=oui de l'eleve 
    if (arreteSilTePlait==true){
    break;}
     
    }catch(Exception e ){
    e.printracktrace();
     
     
    }
     
     public  boolean stopp() {
             System.out.println("pausing process....");
             arreteSilTePlait=false;
              System.out.println("arretSilTePlait= "+arreteSilTePlait);
            // t.stop();
              return arreteSilTePlait;
           }
    }

    si je click sur pause le traitement n'est pas effectué et le processus n'est pas mis en pause.
    Aidez moi svp

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 554
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 554
    Points : 21 615
    Points
    21 615
    Par défaut
    J'imagine que la demande d'arrêt se fait forcément dans un autre thread que le thread de traitement.

    Dans ce cas, pour modifier les données d'un thread à l'autre, il faut un système de synchronisation. Dans le cas présent, rendre la variable volatile est suffisant.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    merci pour votre réponse mais ça n'a pas marché.
    en faite, meme si je click sur le bouton rien ne se passe et je vois que le traitement se fait encore et en affichant le flag arretsvp je constate qu'il a toujours la valeur true.
    la methode stopp() n'est jamais executée puisque le flag n'a pas reçu la valeur false
    que faire

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 132
    Points : 170
    Points
    170
    Par défaut
    Il faudrait que tu saches si la méthode stop a été appelée. La méthode stop pourrait être statique.

    Est-ce que c'est un bean qui a la méthode stop?
    En tout cas en debug tu peux facilement savoir si tu appelles le stop.
    C'est peut-être un pb au niveau de ton client que n'appelle jamais la méthode du bean.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    oui la methode stop() est situé dans le managedBean et j'appelle le thread depuis une methode situé dans mon managedBean.
    mais pourtannt la methode stop() n'est appelée qu'après le traitement entier du traitement.
    y a t-il une façon pour donner une priorité haute à la methode stop() afin que le flag de control reçoit la valeur false?

    merci

Discussions similaires

  1. Comment arreter un processus pendant son fonctionnement ?
    Par ClemRz dans le forum VBA Access
    Réponses: 3
    Dernier message: 20/12/2007, 13h26
  2. Réponses: 1
    Dernier message: 07/08/2007, 21h22
  3. comment cocher/décocher checkbox avec un bouton radio
    Par faucon54 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/05/2007, 17h26
  4. Comment executer un programme avec un bouton
    Par STEPH69000 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 09/08/2006, 19h48
  5. Comment obtneir une MessageBox avec un bouton Détails ?
    Par jmjmjm dans le forum Composants VCL
    Réponses: 4
    Dernier message: 18/12/2005, 18h51

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