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 :

OutOfMemoryExceptions : nombre max de thread


Sujet :

Concurrence et multi-thread Java

  1. #1
    Invité
    Invité(e)
    Par défaut OutOfMemoryExceptions : nombre max de thread
    Voila je cree un programme, pour un exercice, qui cherche de maniere sequetielle une valeur dans un tableau.La recherche se fait en partageant le tableau entre plusieur thread.

    Le nombre de thread est variable, mais le pb c'est que durant l'execution il y a cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread
    	at java.lang.Thread.start0(Native Method)
    	at java.lang.Thread.start(Unknown Source)
    	at Thread1.Search.main(Search.java:38)
    Donc je ne peut pas creer plus de thread, ok.Sauf que si les thread que je doit lancer ne le sont pas, ben mon programme marche pas comme il faut (les thread non lance ne travaille pas).

    Donc j'aimerais savoir si il y a un moyen de savoir au debut du programme combien de thread je peut lancer au maximum...

  2. #2
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Bonjour,

    Pourrait-on voir le code qui crée les threads ainsi que le code des threads ?
    Peut-être que tu les crées d'une manière récursive

    @+


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  3. #3
    Membre expérimenté
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Par défaut
    Il faut que tu utilise la classe Executors qui te permet de definir un pool de thread precis auxquelles tu passent les taches que tu souhaite executer...

    un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private ExecutorService pool;
    pool = Executors.newFixedThreadPool(poolSize);
     
    pool.execute(new Runnable1());
    pool.execute(new Runnable2());
    .
    .
    .
    Comme cela tu n'as pas de debordement car le nombre thread max est bien defini.

    Cette API est très puissante et permet notament la gestion de pool de thread de manière simple

    ++

Discussions similaires

  1. nombre max thread
    Par dark2 dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 07/03/2007, 15h28
  2. Nombre max de connexions autorisées
    Par omillien dans le forum Oracle
    Réponses: 4
    Dernier message: 04/01/2006, 16h28
  3. Réponses: 3
    Dernier message: 24/10/2005, 16h59
  4. Nombre max de connections MySQL ?
    Par RorolePro dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/11/2004, 14h16
  5. [net][Sockets] Quel est le nombre maximal de threads?
    Par itsmii dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 06/05/2004, 10h48

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