2014-10-29 104 views
-3

我有三个线程命名为线程1,线程2和线程3。java线程如何排序线程的执行顺序

如何排序线程执行?

像线程3跟随线程2和线程2跟随线程1? 其实请参考我的解决方案,在我的情况下,线程1加入主程序并同时执行(线程1) 最后创建线程2等等。 我在问这是一个正确的方法吗?

+1

如果您想要一个接一个地等待线程的完整执行,请使用'join()'。 – TheLostMind 2014-10-29 06:25:19

+0

请参考我的解决方案,我使用连接只用于线程t1(与主)休息它是简单的顺序流。 – 2014-10-29 06:31:02

回答

0

你应该看看Thread.join()

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

t.join();

导致当前线程暂停执行,直到t的线程 终止。加入过载允许程序员指定一个等待时间段 。但是,与睡眠一样,加入时间依赖于操作系统 ,所以您不应该假设加入将按您指定的长度准确等待 。

+0

PLZ指我的解决方案 – 2014-10-29 06:32:01

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()); 
} 

}

公共类序列{ 公共静态无效的主要(字串[] 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 join t2 join t1?