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

別のスレッドを使用することの全体的なポイントは、メインスレッドが何か他のことをしている間にそれを実行させることです。メソッドが完了したときに配列を返すようにしたい場合はparse、別のスレッドを開始しないでください。

ただし、バックグラウンドで計算を実行する必要があると思うので、別のことを行う必要があります。AsyncTaskを見てみませんか?それはおそらくあなたが必要とするものです。

于 2012-11-27T21:31:27.250 に答える
1

スレッドが終了した後にのみarrを返すにはどうすればよいですか?スレッドが終了したことをどのように通知できますか?

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

parseThread.join();

return arr;

あなたの質問に対する文字通りの答えがありますが、zmbqの答えはあなたが求めているものにより適しています。

于 2012-11-27T21:37:46.380 に答える