2017-05-25 221 views
0

是新在Java线程我有阿布螺纹一点想法join()方法,可以说,我有10个线程,我开始一个一个这样的一个启动线程一个没有在Java中使用

public class BaseRunnable implements Runnable { 
    String ThreadNo; 
    public BaseRunnable(String ThreadNo) { 
     // TODO Auto-generated constructor stub 
     this.ThreadNo=ThreadNo; 
    } 

    @Override 
    public void run() { 
     // TODO Auto-generated method stub 

     for(int i=0;i<50;i++) 
     { 
      System.out.println("Thread no "+ThreadNo+" Running with index > "+i); 
     } 
    } 
} 

而且在主Methord

BaseRunnable runnable=new BaseRunnable("1");//run on main thread 
BaseRunnable runnableTwo=new BaseRunnable("2");//run on main thread 
BaseRunnable runnable3=new BaseRunnable("3");//run on main thread 
BaseRunnable runnable4=new BaseRunnable("4");//run on main thread 
BaseRunnable runnabl5=new BaseRunnable("5");//run on main thread 
BaseRunnable runnable6=new BaseRunnable("6");//run on main thread 
BaseRunnable runnable7=new BaseRunnable("7");//run on main thread 
BaseRunnable runnable8=new BaseRunnable("8");//run on main thread 


Thread one=new Thread(runnable); 
Thread two=new Thread(runnableTwo); 
Thread thr3=new Thread(runnable3); 
Thread thr4=new Thread(runnable4); 
Thread thr5=new Thread(runnabl5); 
Thread thr6=new Thread(runnable6); 
Thread thr7=new Thread(runnable7); 
Thread thr8=new Thread(runnable8); 

one.start(); 
two.start(); 
thr3.start(); 
thr4.start(); 
thr5.start(); 
thr6.start(); 
thr7.start(); 
thr8.start(); 

我知道如果我使用join()我可以通过一个(one.start(); one.join();)

我尝试另一种方式同步使用那个让运行一个线程运行Ø一个纤维性NE一个,但它不是为了,因此,任何专家帮我主动此类似主题一个第一,线程2等不join()

请认为这是一个初学者的一个问题,请大家帮忙

+0

如果有几个任务做,但这些任务有一定的顺序来完成,下一个任务不能启动,直到之前的任务完成,那么你为什么要试图使用线程呢?请提供更多关于你想要做的事情的背景。 –

+0

我正在测试和学习线程,最近我在我的面试中遇到了一个问题以实现这个功能,所以我开始想出如何实现这一点。请考虑作为学生。谢谢 –

+0

您是否记得确切的面试问题?这与你发布的问题是否真的一样? [这](https://stackoverflow.com/questions/3741765/ordering-threads-to-run-in-the-order-they-were-created-started)是旧的,但仍然适用。 –

回答

0

你可以实现你的目标在这种方式:

 List<BaseRunnable> list = new ArrayList<>(); 
     for (int i = 0; i < 8; i++) { 
      list.add(new BaseRunnable(Integer.toString(i))); 
     } 

     for (BaseRunnable baseRunnable : list) { 
      Thread thread = new Thread(baseRunnable); 
      thread.start(); 
      while (thread.isAlive()) { 
       Thread.sleep(10); 
      } 
     } 
相关问题