2011-04-04 126 views
3

我正在實現一個服務,REST調用多個應用程序。某些REST調用的結果應該存儲在內容提供者中。將上下文傳遞給多個線程是否安全?

我目前正在嘗試使用多個線程來執行HTTP請求,解析結果並將數據存儲在內容提供者中。爲了做到這一點,我必須將上下文傳遞給每個線程。我不確定這是否是一個好主意,因爲我不知道Context是否可以傳遞給多個線程,因爲它的大小,線程安全等等。我想我只是傳遞一個引用每個線程的Context對象,所以也許它不會傳遞它?

回答

4

是的,這很好。我不相信明確的同步是必需的,但你可以用Context做的許多有趣的事情必須發生在UI線程上。

因爲這個原因,它通常是明智的,做一個AsyncTask內的HTTP請求,這將安排您的onPreExecute實施和onPostExecute在UI線程上運行,以及爲消除提供了一個很好的接口。

+0

如果我從服務產生的線程調用sendBroadcast,還是應該玩安全並使用處理函數? – avendael 2011-04-04 14:00:37

+0

我不確定。如果有問題,它可能會抱怨。 – 2011-04-04 14:05:37

+0

好的。不妨試試。謝謝! – avendael 2011-04-04 14:34:41

3

幾乎所有的Java都通過引用傳遞,所以它不是「重量級」的。

但是,您需要小心您對上下文成員的訪問權限是否適當同步,否則您將遇到線程安全問題。

相關問題