2009-06-09 2 views
0

Есть ли возможность создавать темы следующим образом,Создание нескольких Java Темы сразу

Thread odjhygThread= new Thread(objJob1, objJob2); 

Я думаю, что мы не могли бы, если мы хотим создать то, что должно быть сделано? Кто-нибудь знает ответ? Заранее спасибо.

+0

Что вы пытаетесь сделать? Пожалуйста, объясни. –

+0

Я хочу запустить 2 Вакансии. Я инициализировал количество потоков в файле свойств. No_HygThreads = 6 Hyg_jobs = bns и cns jobs Но в этом я хочу запустить 2 задания. что я хочу сделать, Я хочу запустить 6 потоков параллельно, Эти 6 потоков для двух JObs. Мой код должен работать для следующих сценариев: 1) Для запуска 4 заданий bns и двух заданий cns параллельно 2) Для запуска 2 заданий bns и 4 заданий cns параллельно 3) Для запуска 3 заданий bns и 3 cns заданий параллельно 4) Для запуска 6 заданий bns и заданий Zero cns параллельно и т. д. Мы хотим запустить bns и cns параллельно, мы можем параллельно запускать 6 заданий. – 2009-06-09 06:57:13

+1

Кажется, это дубликат http://stackoverflow.com/questions/944291/threads-in-java того же автора. –

ответ

2

Я не уверен, что это то, к чему вы стремитесь, но ... Создайте класс, который расширяет поток, и дайте ему c'tor, который принимает 2 параметра.

4

A Thread выполняет одно задание. Так они разработаны.

Если вы пытаетесь выполнить две задания, используйте две темы.

Если вы хотите передать два задания для запуска в фоновом режиме, прочитайте JavaDocs для класса Executors и класс ThreadPoolExecutor. Вам понадобится некоторое время, чтобы обдумать их, но, к сожалению, это характер многопоточности в Java. Сложно.

0

Да (если я не хватает чего-то здесь)

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

Я предполагаю, что вы уже знаете конструктора Thread, который принимает Runnable в качестве аргумента. Вы пытаетесь создать поток, который вызывает run() для двух разных объектов Runnable? Это не существует, но это было бы просто написать:

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(); 
    } 

} 

Вы бы могли бы сделать некоторые обработку исключений, чтобы избежать проблем в thing1 от предотвращения выполнения thing2. Затем, просто создать новую тему, как так:

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

Если это не то, что вы пытаетесь сделать (например, если вы хотите, чтобы они оба одновременно работать в своих собственных потоков), вы, вероятно, хотите Steve M.» s ответ выше.

Смежные вопросы