2009-06-09 5 views
0

Est-il possible de créer les fils comme suit,Créer plusieurs threads Java à la fois

Thread odjhygThread= new Thread(objJob1, objJob2); 

Je pense que nous ne pouvions pas, si nous voulons créer ce qui doit être fait? quelqu'un connaît la réponse? Merci d'avance.

+0

Qu'est-ce que vous essayez de faire? S'il vous plaît, expliquez. –

+0

Je veux exécuter 2 travaux. J'ai initialisé le nombre de threads dans le fichier de propriétés. No_HygThreads = 6 Hyg_jobs = emplois bns et cns Mais dans ce je veux exécuter 2 emplois. Ce que je veux faire est, Je dois exécuter 6 Threads en parallèle, Ces 6 threads pour deux JObs. Mon code doit fonctionner pour les scénarios suivants: 1) Pour exécuter 4 travaux bns et 2 travaux cns en parallèle 2) Pour exécuter 2 travaux bns et 4 travaux cns en parallèle 3) Pour exécuter 3 travaux bns, et 3 cns jobs en parallèle 4) Pour exécuter 6 jobs bns, et Zero cns jobs en parallèle, et ainsi de suite. Nous voulons exécuter bns et cns en parallèle, nous pouvons déclencher 6 jobs en parallèle –

+1

Semble être un doublon de http://stackoverflow.com/questions/944291/threads-in-java du même auteur. –

Répondre

2

Je ne suis pas sûr que ce soit ce que vous visez, mais ... Créez une classe qui étend Thread, et donnez-lui un c'tor qui prend 2 paramètres.

4

Un thread exécute une tâche. C'est comme ça qu'ils sont conçus.

Si vous essayez d'exécuter deux travaux, utilisez deux threads.

Si vous souhaitez transférer deux tâches à exécuter en arrière-plan, lisez les JavaDocs pour la classe Executors et la classe ThreadPoolExecutor. Cela vous prendra un peu de temps pour les comprendre, mais malheureusement, c'est la nature du multi-threading en Java. Compliqué.

0

Oui (à moins que je manque quelque chose ici)

public class MyThread extends Thread { 
    private final Object object1; 
    private final Object object2; 

    public MyThread(Object o1, Object o2) { 
     //implicate call to super() 
     object1 = o1; 
     object2 = o2; 
    } 
    @Override 
    public void run() { 
     //ha ha 
     //he he 
     //ho ho 
     //off to work we go 
    } 
} 
0

Je suppose que vous êtes déjà au courant du constructeur de fil qui prend un Runnable comme argument. Essayez-vous de créer un thread qui appelle run() sur deux objets Runnable différents? Cela n'existe pas, mais il serait facile d'écrire:

public class RunTwoThings implements Runnable { 

    private Runnalbe thing1; 
    private Runnable thing2; 

    public RunTwoThings(Runnable thing2, Runnable thing2) { 
    this.thing1 = thing1; 
    this.thing2 = thing2; 
    } 

    public void run() { 
    thing1.run(); 
    thing2.run(); 
    } 

} 

Vous auriez peut-être envie de faire une exception pour éviter la manipulation des problèmes dans Thing1 d'empêcher l'exécution de thing2. Ensuite, il suffit de créer un nouveau fil comme ceci:

Thread odjhygThread= new Thread(new RunTwoThings(objJob1, objJob2)); 

Si ce n'est pas ce que vous essayez de faire (par exemple, si vous voulez à la fois pour exécuter simultanément dans leurs propres threads), vous voulez probablement Steve M. » s réponse ci-dessus.

Questions connexes