繁体   English   中英

一次创建多个Java线程

[英]Create multiple Java Threads at once

是否可以按以下方式创建线程,

Thread odjhygThread= new Thread(objJob1, objJob2);

我想我们不能,如果我们想创造需要做的事情? 有人知道答案吗? 提前致谢。

线程运行一项工作。 这就是他们的设计方式。

如果要运行两个作业,请使用两个线程。

如果要移交两个要在后台运行的作业,请阅读Executors类的JavaDocs和ThreadPoolExecutor类。 花费一些时间来解决这些问题,但是不幸的是,这是Java多线程的本质。 复杂。

我不确定这不是您的目标,但是..创建一个扩展Thread的类,并为其提供一个带有2个参数的c'tor。

是的(除非我在这里丢失了一些东西)

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
    }
}

我假设您已经意识到使用Runnable作为参数的Thread构造函数。 您是否要创建一个在两个不同的Runnable对象上调用run()的线程? 这不存在,但是很容易编写:

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.的回答。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM