如何加入任何两个特定的线程?

时间:2017-01-04 13:11:34

标签: java multithreading

我是多线程新手。如果有人能清除我的怀疑,我会很高兴。

我有3个线程t1,t2和t3。如果我在t1上使用join,如下所示,所有其他线程等待t1完成。是否有可能只是让t2等待t1完成,这样t1和t3可以同时运行?

    t1.start();
    t1.join();
    t2.start();
    t3.start(); 

3 个答案:

答案 0 :(得分:2)

  

如果我在t1上使用如下所示的联接,则所有其他线程都会等待t1完成。

没有。只有执行t1.join()调用的线程才会等待t1完成。所有其他主题继续。

  

我是否可以让t2等待t1完成,以便t1t3可以同时运行?

t1.join()主题上运行的代码执行t2

答案 1 :(得分:-1)

start上调用join之前,您应该join要同时运行的所有线程,因为main将阻止joined线程直到t1线程完成。所以,如果你想运行t3t2,然后在前两个完成后启动//Start t1, t3 t1.start(); t3.start(); //Wait until t1 completes t1.join(); //Wait until t3 completes, if this is required t3.join(); //Start t2 t2.start(); //Wait until t2 completes, if this is required t2.join(); ,你应该

    //looping set1

for(x=0;x<=15;x++)
{
    setcolor(x);
    sleep(3000);
}
setfillstyle(1,1);
fillpoly(13,lyt1);
fillpoly(9,lyt2);
fillpoly(9,lyt3);
fillpoly(12,lyt4);

//looping set2

for(x=0;x<=15;x++);
{
    setcolor(x);
    sleep(3000);
}
setfillstyle(1,1);
fillpoly(11,lyt5);
fillpoly(12,lyt6);
fillpoly(13,lyt7);
fillpoly(12,lyt8);

答案 2 :(得分:-1)

是的:您可以在t3.start()之前t1.join()

t1.start();
t3.start();
t1.join();
t2.start();