java线程如何对线程的执行进行排序

时间:2014-10-29 06:24:31

标签: java multithreading

我有三个线程,分别是线程1,线程2和线程3。

如何对线程执行进行排序?

类似线程3跟随线程2,线程2跟随线程1? 实际上请参考我的解决方案,在我的情况下,线程1加入main并在执行时(线程1) 最后创建线程2等等。 我问这是一种正确的方法吗?

2 个答案:

答案 0 :(得分:0)

你应该看看Thread.join()

  

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

     

t.join();

     

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

答案 1 :(得分:0)

包装顺序;

类T1实现了Runnable {

@Override
public void run() {
    System.out.println("thread executing is : "
            + Thread.currentThread().getName());
    T2 tr2 = new T2();
    Thread t2 = new Thread(tr2, "t2");
    t2.start();
}

}

类T2实现了Runnable {

@Override
public void run() {
    System.out.println("thread executing is : "
            + Thread.currentThread().getName());
    T3 tr3 = new T3();
    Thread t3 = new Thread(tr3, "t3");
    t3.start();
}

}

类T3实现了Runnable {

@Override
public void run() {
    System.out.println("thread executing is : "
            + Thread.currentThread().getName());
}

}

public class Sequence {     public static void main(String [] args)抛出InterruptedException {

    T1 tr1 = new T1();
    Thread t1 = new Thread(tr1, "t1");
    t1.start();
    t1.join();
    Thread.sleep(4000);
    System.out.println("main finishing..");
}

}

//这就是我在做的方式..有更好的方法吗?喜欢t3加入t2加入t1?