簡體   English   中英

Java(Android)線程,訪問相同列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM