Создайте несколько потоков Java одновременно - PullRequest
0 голосов
/ 09 июня 2009

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

Thread odjhygThread= new Thread(objJob1, objJob2);

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

Ответы [ 4 ]

4 голосов
/ 09 июня 2009

Поток запускает одно задание. Так они спроектированы.

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

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

2 голосов
/ 09 июня 2009

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

0 голосов
/ 09 июня 2009

Я предполагаю, что вы уже знаете о конструкторе 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. Затем просто создайте новую тему, например, так:

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

Если это не то, что вы пытаетесь сделать (например, если вы хотите, чтобы они оба запускались одновременно в своих собственных потоках), вам, вероятно, нужен ответ Стива М. выше.

0 голосов
/ 09 июня 2009

Да (если я что-то здесь упускаю)

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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...