将上下文传递给多个线程是否安全?

时间:2011-04-04 05:59:46

标签: java android multithreading thread-safety

我正在实现一个为多个应用程序执行REST调用的服务。某些REST调用的结果应存储在内容提供程序中。

我目前正在尝试使用多个线程来执行HTTP请求,解析结果并将数据存储在内容提供程序中。为了做到这一点,我必须将Context传递给每个线程。我不确定这是不是一个好主意,因为我不知道Context是否可以传递给多个线程,因为它的大小,线程安全等等。我在想我只传递一个引用每个线程的Context对象,所以也许它传递它并不重要?

2 个答案:

答案 0 :(得分:4)

是的,这很好。我不认为需要显式同步,但是你可以在UI线程上使用Context执行许多有趣的事情。

由于这个原因,通常明智的做法是在AsyncTask内部执行您的http请求,这将安排在UI线程上运行onPreExecuteonPostExecute的实现,如以及为取消提供一个很好的界面。

答案 1 :(得分:3)

Java中的所有内容都是通过引用传递的,所以它不是“重量级”。

但是,您需要注意,您对Context成员的访问权限是否已正确同步,否则您将遇到线程安全问题。