在我的Android应用中,我有如下所述的arrayList。

Public List<String> prefCoinList = new ArrayList<String>() ;


我将使用THREAD_POOL_EXECUTOR执行10个异步任务,如下所述。

new asyncTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, order);


每个异步任务将只读取arrayList“ prefCoinList”并检查特定值。




10个异步任务是否将在arrayList“ prefCoinList”上没有任何死锁的情况下运行?
有螺纹锁/挂问题吗?
如果可以同时读取arraylist,那么每个线程都将获得自己的副本(或)所有线程将轮流等待并读取arraylist吗?

最佳答案

如果在构造后未修改列表,则可以从多个线程访问它而不会出现问题。每个线程将读取对象的单个副本。

如果该列表偶尔被修改,则可以使用ReadWriteLock或其他访问控制机制。

10-07 19:19
查看更多