begin process at 2010 03 21 15:54:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Divers

 > 

Général

 > 

Thread


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Thread

jeudi 21 février 2008 à 22:04:16 | Thread

kyokosan

salut
j'ai un problème de thread quand je compile j'ai ce message d'erreur

java.lang.IllegalMonitorStateException: current thread not owner
 at java.lang.Object.wait(Native Method)
 
Voici la partie qui me cause problème:
public class Requete extends Thread {
void run()
.
.
.
.
.

              Dialog1.fin+=1;
             Dialog1.file_globale[Dialog1.fin]=this;
             synchronized( Dialog1.file_globale[Dialog1.fin]){
               try{Dialog1.file_globale[Dialog1.fin].wait();}//l'erreur a ce niveau
               catch(InterruptedException ex4){}
             }
.............}

public classe Agent{
....... while(Dialog1.fin>=Dialog1.deb){ //la file n'est pas vide

   synchronized(Dialog1.file_globale[Dialog1.deb]){
                       Dialog1.file_globale[Dialog1.deb].notify();
                       Dialog1.deb+=1;
              }
          }
            Dialog1.deb=0;//reinitialiser la file globale des requetes
        Dialog1.fin=-1;}
file_globale est un vecteur de type Requete (thread) et c'est dans cette file que je veux  bloquer les requêtes

le lancement de ce Thread se fait par
public class lancer(){Requete requ=new Requete[nb_req].........

for (int n = 0; n < nb_req; n++) {
    requ[n].start();}...............................}

l'erreur se trouve au niveau de l'instruction : try{file_globale[fin].wait();}

pourriez vous m'expliquer la raison de cette erreur
merci beaucoup

lundi 25 février 2008 à 11:53:22 | Re : Thread

uhrand


Ton code fonctionne pour moi:

public class TestRequete {

    private int nb_req = 5;

    public TestRequete() {
        lancer();
        try {
            Thread.sleep(5000);
        } catch (InterruptedException ex) {
        }
        Agent();
    }
//le lancement de ce Thread se fait par:
    private void lancer() {
        Requete[] requ = new Requete[nb_req];

        for (int n = 0; n < nb_req; n++) {
            requ[n] = new Requete(n);
            requ[n].start();
        }
    }

    private void Agent() {
        while (Dialog1.fin >= Dialog1.deb) { //la file n'est pas vide

            synchronized (Dialog1.file_globale[Dialog1.deb]) {
                Dialog1.file_globale[Dialog1.deb].notify();
                Dialog1.deb += 1;
            }
        }
        Dialog1.deb = 0;//reinitialiser la file globale des requetes
        Dialog1.fin = -1;
    }

    public static void main(String[] args) {
        new TestRequete();
    }
}

class Requete extends Thread {

    private int n;

    public Requete(int n) {
        this.n = n;
    }

    @Override
    public void run() {

        Dialog1.fin += 1;
        Dialog1.file_globale[Dialog1.fin] = this;
        synchronized (Dialog1.file_globale[Dialog1.fin]) {
            try {
                Dialog1.file_globale[Dialog1.fin].wait();
                System.out.println(n + " " + " OK");
            } catch (InterruptedException ex4) {
                ex4.printStackTrace();//l'erreur a ce niveau
            }
        }
    }
}

class Dialog1 {

    static int deb;
    static int fin = -1;
    /*file_globale est un vecteur de type Requete (thread)
    et c'est dans cette file que je veux  bloquer les requêtes*/
    static Requete[] file_globale = new Requete[10];
}


Cette discussion est classée dans : fin, file, thread, globale, dialog1


Répondre à ce message

Sujets en rapport avec ce message

thread [ par kyokosan ] salut J'ai un problème de thread, en exécutant le code il m'affiche ce message d'erreurjava.lang.IllegalMonitorStateException: current thre erreur thread [ par kyokosan ] salut j'ai un problème  de thread et je n'arrive pas a interpréter le message d'erreurvoici la partie ou se trouve l'erreur         fin+=1; Pb: copie du contenu d'un repertoire dans un autre [ par kam81 ] salut,je voudrais faire la copie du contenu d'un repertoire dans un autre, cette tâche dois se faire à chaque fois un fichier est inséré dans ce reper Attendre Thread [ par yamxx ] Voila mon problème : Je lance un Thread dans un ActionListener lors de l'activation d'un bouton, mais il faudrait que j'attende la fin du Thread pour Thread Et accés conccurent [ par suzukMan ] Bonjour,Je dois réaliser un programme en java qui simule le traitement des processus par un systéme. J'ai au depart 2 Threads un qui génére Dilemme de la mort qui tue(enfin, pour moi ^^) entre DB etJava [ par jonathan_467 ] Bonjour, je suis étudiant en post dernière année informatique à l'ephec et là je bosse sur mon travail de fin d"étude,J'en suis donc au premier module les threads [ par limalima ] Bonjour,j'essai de faire un simple thread qui utilise une instance d'un compte bancaire pour y déposer de l'argent ou pour les retirer, mon solde de d threads [ par limalima ] Bonjour, j'ai une classe(T3) implementant l'interface runnable, cete classe utilise un objet d'une autre classe Compte1,l'objectif est d'efectuer de minuter methode [ par jean2a ] bonjour,j'ai ecris un programme de jeux et je voudrais stopper ma methode pendant un laps de temps de 10 secondes avec interruption du temps si clik s thread et concurrent [ par NiJuste ] Bonjour, je suis encore debutant en programmation, y a t'il klk'un qui peu m'aider avec un petit  programme qui calcule l'integrale d'une fonction mai


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,044 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales