0

我有这个代码:

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已经完成了?

4

2 回答 2

1

如何仅在 Thread 完成后返回 arr ?如何通知我,该线程已完成?

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

parseThread.join();

return arr;

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

于 2012-11-27T21:37:46.380 回答
1

使用另一个线程的全部意义在于让它在您的主线程执行其他操作时运行。如果您希望您的parse方法在完成后返回数组,则不应启动另一个线程。

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

于 2012-11-27T21:31:27.250 回答