Я новичок в Java и Android, поэтому терпите меня.
У меня есть один массив списков строк, которые я заполняю в основном интерфейсе.
У меня есть другой поток, который отправляет по очереди строки arrayList через сокет, и после отправки каждого из них он удаляет его из списка.
Так что в основном это FIFO, сдва разных потока обращаются к одному и тому же массиву списков.
Как сделать чтение и запись в одном списке безопасными для потоков?Потому что я прочитал, что должен, что предотвратило будущие ошибки.
Моей первой мыслью было создание синхронизированного метода для доступа к 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);
}
}
};
Это правильно?Потому что я новичок в затмении и не могу найти способ подтвердить, что один поток не вызывает accessArrayList, если другой использует его.
Спасибо за ваше время.