我是Java和Android的新手,所以请耐心等待。
我有一个字符串arrayList,我在主UI上填充。
我有另一个线程,它通过套接字逐个发送arrayList的字符串,并在发送每个线程后从列表中删除它。
所以基本上它是一个FIFO,有两个不同的线程访问同一个arrayList。
如何在同一列表中进行读写,线程安全?因为我读了必须这样做,从而防止了将来的错误。
我的第一个想法是创建一个访问arrayList的同步方法。
这是我为两个线程访问ArrayList而创建的方法。
public synchronized String accessArrayList(boolean add, boolean get, String utt)
{
if(add){
mStrings.add(utt);
return null;
}
else if(get){
return mStrings.get(0);
}
else{
mStringsUttComm.remove(0);
return null;
}
}
主线程只是将字符串添加到此列表中。
第二个线程执行此操作:
Runnable runner = new Runnable() {
public void run() {
while(!mString.isEmpty()){
//socket sends string
sc.actionPerformed(accessArrayList(false, true, null));
//erase from list
accessArrayList(false, false, null);
}
}
};
这是对的吗?因为我是eclipse的新手,如果另一个线程正在使用它,我找不到确认一个线程不调用accessArrayList的方法。
感谢您的时间。
答案 0 :(得分:1)