gpt4 book ai didi

java - Android - 更新数组列表时的线程安全

转载 作者:太空宇宙 更新时间:2023-11-03 10:19:46 25 4
gpt4 key购买 nike

我的 Activity 由一个 BroadcastReceiver 和一个 AsyncTask 组成,它们都更新一个 ArrayList(非常频繁)。我知道 AsyncTask 在后台运行,并且 BroadcastReceiver 和 AsyncTask 线程可能会同时更新 ArrayList。我怎样才能使它们线程安全?

编辑:正如 alexander 所提到的,BroadcastReceiver 在主线程上运行,除非您明确地以其他方式实现它。

最佳答案

AsyncTask 作为单独的线程运行。BroadcastReceiver 通常在主线程上运行,除非您在“registerReceiver”中另有指定(参见此处:http://developer.android.com/reference/android/content/Context.html#registerReceiver(android.content.BroadcastReceiver,%20android.content.IntentFilter,%20java.lang.String,%20android.os.Handler))

您可以像 Budius 所写的那样使用 Vector,或者使用 synchronized block 包装对 ArrayList 的所有访问:

synchronized(myList){
myList.add(itemToAdd);
}

关于java - Android - 更新数组列表时的线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25848195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com