在我的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或其他访问控制机制。