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 :

Parallélisme en Java


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 23
    Par défaut Parallélisme en Java
    bonjour,
    je veux créer un prog qui calcule la somme d'un tableau en parallèle
    c'est-a-dire,
    deux processus exécuté en même temps : l'un calcule disant la moite d'un tableau et l'autre processus calcule la deuxième moitie

    ce que je veux savoir c'est comment utiliser "Runnable"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class sommeTab implements Runnable{
      public void run(){
      /* est ce que je peux inclure deux fonction a l'interieur de la fonction Run 
      si oui comment ?
      (une pour la première moitie du tableau et une autre pour l'autre moitie) */
      }
    }
    je ne vous demande pas de me résoudre l'exercice juste m'explique comment le résoudre.
    PS : excusez moi pour mon Français

  2. #2
    Membre émérite Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Par défaut
    il faut instancier deux Runnable différents et lancer leur start(); du coup tu auras deux threads qui tourneront en même temps.

  3. #3
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 540
    Par défaut
    Ou bien un swingWorker.

    J'espère que tu n'espères pas améliorer les perfs en fasant ça...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 130
    Par défaut
    Regarde plutôt du coté des parallel arrays :
    http://blog.paumard.org/2011/10/26/parallel-arrays-1/

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Aure7780 Voir le message
    Regarde plutôt du coté des parallel arrays :
    http://blog.paumard.org/2011/10/26/parallel-arrays-1/
    Certes. Mais tout cela a plutôt l'air d'un exercice.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre averti
    Inscrit en
    Décembre 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 23
    Par défaut
    merci a vous tous pour vos réponse, je vais essayer de le résoudre avec deux Runnable.

    Citation Envoyé par Aure7780 Voir le message
    Regarde plutôt du coté des parallel arrays :
    http://blog.paumard.org/2011/10/26/parallel-arrays-1/
    j'ai déjà vu ce site, mais pour vous dire la vérité, ça ne m'a pas beaucoup aidé

    enfin bref, je vais essayé avec ce que m'a proposé BenWillard et je vous dirai ce que ça a donné.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 130
    Par défaut
    Citation Envoyé par thehurrica Voir le message
    merci a vous tous pour vos réponse, je vais essayer de le résoudre avec deux Runnable.


    j'ai déjà vu ce site, mais pour vous dire la vérité, ça ne m'a pas beaucoup aidé

    enfin bref, je vais essayé avec ce que m'a proposé BenWillard et je vous dirai ce que ça a donné.
    Pour faire la somme d'un tableau c'est simple :
    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
    Random r = new Random(9999999);
    double[] monTab = new double[5000000];
    // On remplit le tableau pour les tests
    for (int i = 0; i < 5000000; i++)
    	monTab[i] = r.nextDouble();
     
    long start = 0, end = 0;
    double somme = 0;
     
    start = System.currentTimeMillis();
    // Parallels Array !
    // Création du pool pour le multithreading
    ForkJoinPool pool = new ForkJoinPool();
    // size est un des paramètres de l'algorithme
    ParallelDoubleArray pda = ParallelDoubleArray.createFromCopy(monTab, pool);
    // Somme
    somme = pda.sum();
    end = System.currentTimeMillis();
     
    System.out.println("Somme (parallel) = " + somme + " en "
    		+ (end - start) + "ms");
     
     
    // Somme "à la main"
    start = System.currentTimeMillis();
    for (int j = 0; j < monTab.length; j++) {
    	somme += monTab[j];
    }
    end = System.currentTimeMillis();
     
    System.out.println("Somme (classique) = " + somme + " en "
    		+ (end - start) + "ms");
    pom.xml (Maven pour les dépendances des jar) :
    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
    40
    41
    42
    43
    44
    45
    46
    47
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    	<modelVersion>4.0.0</modelVersion>
    	<groupId>com.prozero.parallel</groupId>
    	<artifactId>parallel-arrays</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
     
    	<repositories>
    		<repository>
    			<id>codehaus-milestone</id>
    			<name>codehaus-milestone</name>
    			<url>http://repository.codehaus.org</url>
    			<snapshots>
    				<enabled>false</enabled>
    			</snapshots>
    		</repository>
    	</repositories>
     
    	<dependencies>
    		<dependency>
    			<groupId>org.codehaus.jsr166-mirror</groupId>
    			<artifactId>jsr166y</artifactId>
    			<version>1.7.0</version>
    		</dependency>
     
    		<dependency>
    			<groupId>org.codehaus.jsr166-mirror</groupId>
    			<artifactId>extra166y</artifactId>
    			<version>1.7.0</version>
    		</dependency>
    	</dependencies>
     
    	<build>
    		<plugins>
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-compiler-plugin</artifactId>
    				<version>2.3.2</version>
    				<inherited>true</inherited>
    				<configuration>
    					<source>1.7</source>
    					<target>1.7</target>
    				</configuration>
    			</plugin>
    		</plugins>
    	</build>
    </project>

    J'ai fait 2-3 tests, pas très concluant concernant le multithreading (en même temps j'ai pas une super machine...). Donc à voir.
    Mais si c'est une somme simple, le calcul de base à l'air très performant.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. le Java est la continuité du C++ ???
    Par Vincent PETIT dans le forum Débats sur le développement - Le Best Of
    Réponses: 33
    Dernier message: 25/08/2005, 20h17
  2. Envoi de Datagrames par IP en JAVA
    Par the java lover dans le forum Développement
    Réponses: 2
    Dernier message: 14/08/2002, 11h44
  3. directx et java?? possible??
    Par jiraiya dans le forum DirectX
    Réponses: 3
    Dernier message: 09/07/2002, 19h55
  4. webcam : lire sur un port usb en c/c++ ou java. sous win. ?
    Par flo007 dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 24/05/2002, 23h24
  5. Service de nommage java C++
    Par Anonymous dans le forum CORBA
    Réponses: 3
    Dernier message: 15/04/2002, 12h48

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