等到线程正常完成

时间:2012-11-27 21:28:12

标签: java multithreading runnable

我有这段代码:

public class JsoupParser {      
    ArrayList<CompanyInfo> arr = new ArrayList<CompanyInfo>();

    public JsoupParser() {}

    public ArrayList<CompanyInfo> parse(final String link) throws IOException {
        Runnable runnable = new Runnable() {
            public void run() {
                // Here I do some operations and then assign some value
                // to my `arr` ArrayList
            }
        };
        new Thread(runnable).start();

        return arr; // error here, as expected      
    }
}

系统立即返回arr,此时为null

如何在arr完成后返回Thread?如何通知Thread已完成?

2 个答案:

答案 0 :(得分:1)

使用另一个线程的重点是让你的主线程执行其他操作时运行它。如果你希望你的parse方法在完成时返回数组,它就不应该启动另一个线程。

但是,由于我认为您 希望计算在后台进行,因此您需要做其他事情。你为什么不看看AsyncTask?这可能就是你所需要的。

答案 1 :(得分:1)

  

如何在Thread完成后返回arr?我怎么能   告知,Thread已经完成了?

Thread parseThread = new Thread(runnable).start();

parseThread.join();

return arr;

你的问题有字面答案,但zmbq的答案更适合你所追求的目标。