有没有办法在完成另一个线程的工作后调用一个线程?我只是想在前一个线程完成工作时背靠背调用三个线程。
我正在尝试这个
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();
}
}
这是正确的方法??
答案 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()