begin process at 2012 02 14 10:19:36
  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 Comment changer le dossier de l'upload [ par grjoseph ] Voila j le code suivant [code=java] import com.oreilly.servlet.MultipartRequest; import java.io.*; import java.util.*; import javax.servlet.*; import problem thread [ par rowanabejjani ] rowana bejjani[^^happy13] http://www.4shared.com/file/CjqJxl6S/ProjetFinal.html je m'excuse pour mon francais,j'ai besoin d'aide s'il vous plait downl 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


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 1,482 sec (4)

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