我们如何在Java中调用多个线程?

时间:2015-05-14 06:10:56

标签: java multithreading

有没有办法在完成另一个线程的工作后调用一个线程?我只是想在前一个线程完成工作时背靠背调用三个线程。

我正在尝试这个

public class TestThreads {
public static void main (String [] args) {
MyRunnable r = new MyRunnable();
Thread first = new Thread(r);
Thread second = new Thread(r);
Thread third = new Thread(r);
first.start();
second.start();
third.start();
}
}

这是正确的方法??

3 个答案:

答案 0 :(得分:4)

您正在寻找Thread.Join()

  

join方法允许一个线程等待完成   另一个。如果t是其当前正在执行其线程的Thread对象,则

t.join();
     

导致当前线程暂停执行直到t的线程   终止。连接过载允许程序员指定一个   等待期。但是,与睡眠一样,join依赖于OS   对于计时,所以你不应该假设联接将完全等待   只要你指定。

     

就像睡眠一样,join通过退出来响应中断   InterruptedException的。

所以它会像

first.start();
first.join();
second.start();
second.join();
third.start();

在旁注中,您可以参考此Thread join() method in Java with example

答案 1 :(得分:2)

  

加入

     

join方法允许一个线程等待完成   另一个。如果t是其当前正在执行其线程的Thread对象,则

     

t.join();导致当前线程暂停执行直到t    线程终止。连接过载允许程序员指定一个    等待期。但是,与睡眠一样,join依赖于OS    对于计时,所以你不应该假设联接将完全等待    只要你指定。

     

就像睡眠一样,join通过退出来响应中断    InterruptedException的。

以下是代码中的简单更改

var ndx = crossfilter(data);
...
var requestHeadersDim = ndx.dimension(function(d) {
    // What should go here? 
});

答案 2 :(得分:1)

你为什么使用线程?如果您不想进行并行处理,则应继续执行顺序执行。

如果您仍想使用线程,可以使用join方法。

first.start();
first.join();
second.start();
second.join();
third.start()