[英]Java (Android) threads , accessing same list
我是Java和Android的新手,所以請多多包涵。
我有一個要在主界面上填寫的字符串的arrayList。
我有另一個線程正在通過套接字逐個發送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(如果另一個正在使用它)。
感謝您的時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.