我知道我可以使用以下内容让线程B在继续之前等待线程A完成:

class A extends Thread{
    public void run(){
        ....
    }
}
class B extends Thread{
    private Thread someThread;
    B(Thread t){
        someThread=t;
    }
    public void run(){
        someThread.join();
        ...//then proceed
    }
}


但是,如何在run()A中调用B,然后等待其完成才能继续?也就是说,我想要类似

class A extends Thread{
    private Thread someThread;
    B(Thread t){
        someThread=t;
    }
    public void run(){
        //*how to start B and wait it finish?
        ...//then proceed
    }
}
class B extends Thread{
    public void run(){
        ....
    }
}

最佳答案

如果可能的话,一个更简单的解决方案是先启动B,然后启动b.join();,然后在客户端代码中对A执行相同的操作:

b.start();
b.join();
a.start();
a.join();


在启动线程之前先启动并连接到另一个胎面是没有意义的。

关于java - 在Java中反向使用Thread.join(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9132665/

10-10 16:32
查看更多