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 :

Gestion des threads


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Par défaut Gestion des threads
    Bonjour,
    est ce que le petit bout de code suivant lancerai plusieurs thread en meme temps?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for( int i=0; i<10; i++)
    {
    ExempleThread t=new ExempleThread(i);
    t.run();
    }
    avec "ExempleThread" une classe qui hérite de la classe Thread et implémente "run()".

    Merci d'avance

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Oui sauf que pour lancer un thread, il faut utiliser la méthode start().
    Mais c'est bien la méthode run que tu dois implémenter.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Par défaut
    Merci,

    un "t.run()" me lancera séquenciellement les threads, alors que "t.start()" lance un thread meme si le précédent n'a pas terminé.
    Sachant qu'avec 10 threads c'est acceptable de les lancé sur ma machine mais j'ai en moyenne 300 threads à lancer, cela bloquera ma machine. La question que je me pose, est ce qu'il y a moyen d'implémenté un truc propore à une machine 8 corps par exemple, et dire tel ou tel thread va sur tel corps?!

    Nad.

  4. #4
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Si tu souhaites utiliser la méthode run, autant ne pas créer des Thread mais plutôt des Runnable. Et pour être tout à fait exact, cela ne te lanceras pas tes threads séquentiellement, mais tes tâches de manière séquentielle car tu travailleras dans un seul thread (le courant).

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ton code ne crée pas de thread au sens machine, tout se fait dans ton thread principal. C'est start() qui crée des nouveaux threads. Si t'as 300 opérations que tu veux paralléliser sans avoir pour autant 300 threads qui se battent, regarde du coté de Executors.newFixedThreadPool() ou de la classe ThreadPoolExecutor directement, qui permettent de définir une "queue" de tâche avec un nombre max de tâches simultanées (les autres restant en attente)

  6. #6
    Membre très actif Avatar de _Xavier_
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2009
    Messages : 311
    Par défaut
    Citation Envoyé par polochonad Voir le message
    La question que je me pose, est ce qu'il y a moyen d'implémenté un truc propore à une machine 8 corps par exemple, et dire tel ou tel thread va sur tel corps?!

    Nad.
    Tu veux dire coeurs au lieu de corps, hum intéressant comme question ?
    J'attends la réponse des spécialistes mais j'ai tendance à croire que c'est la JVM qui gère ça, même si ça puisse te permettre de personnaliser la parallélisation, tâche qui doit être très délicate.

  7. #7
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    non tu ne peux pas destiner un thread à un core précis, d'aiileurs généralement même l'OS ne te le permet pas. Si tu veux tirer avantage des core, il faut faire au moins autant de threads de travail qu'il n'y a de core. Rien ne te garanti que l'os ne va pas faire passer un thread d'un core à une autre, mais ca c'est pas ton problème. Pour connaitre le nombre de CPU disponible (des cores apparaissent comme des CPU du point de vue des applications), tu as java.lang.Runtime.availableProcessors().

Discussions similaires

  1. gestion des threads
    Par yanis97 dans le forum Langage
    Réponses: 6
    Dernier message: 20/04/2006, 12h41
  2. Gestion des Threads
    Par Nalfouille dans le forum MFC
    Réponses: 3
    Dernier message: 05/04/2006, 16h29
  3. Gestion des threads
    Par yanis97 dans le forum C++
    Réponses: 6
    Dernier message: 08/03/2006, 09h39
  4. GEstion des thread
    Par Julien Dufour dans le forum Access
    Réponses: 8
    Dernier message: 06/10/2004, 14h28
  5. [reseaux] Gestion des threads en perl
    Par totox17 dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 28/11/2002, 09h40

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