运行方法后执行代码?

时间:2013-10-03 19:48:55

标签: java multithreading

我在A类中有一个方法,它创建一个线程并在类B中调用run方法。我在类B中有一个列表,它在类B的run方法中更新,我需要在类A中访问它run方法返回。我在下面给出了示例代码。

class A {
    public static void main(String[] args) {

        List l = null;

        B obj = new B();
        Thread T = new Thread(obj);
        T.start();

        l = obj.getList();
        // do something with l    
    }
}

class B implements Runnable {

    List l;

    void run() {
        l = doSomething();    
    }

    public List getList() {
        return List l;
    }
}

现在,当我获得A类中的列表值l = obj.getList();时,我将变为null。类A中的行l = obj.getList();会在run方法更新之前立即被调用。如何使主线程等待并在线程T返回后显示正确的值。请建议吗?

2 个答案:

答案 0 :(得分:7)

虽然其他建议也可能有用。最简单的解决方案是等待线程结束。

T.start();
T.join();

l = obj.getList();

答案 1 :(得分:1)

在这种特殊情况下,我认为没有理由在第一时间产生线程。

而不是

B obj = new B();
Thread T = new Thread(obj);
T.start();

你可以这样做:

new B().run();

当您在开始和加入之间执行某些操作时,使用join更有用。

T.start();
//do some other work here
T.join();