Пожалуйста, внимательно прочитайте текст, заголовок не так хорош, но я не мог придумать, как проще описать проблему.
Это теоретическая проблема, я буду использовать Java для демонстрации, ноРешение, в котором я нуждаюсь, больше похоже на шаблон проектирования, поэтому оно может быть удобным для любого языка.
Программа имеет 2 потока:
поток A - взаимодействует с пользователем, который может добавлять или удалять элементы.набор
поток B - постоянно перебирать множество, выполняющее задачи над его элементами
Как я могу выполнить этот сценарий, не имея ConcurrentModificationException
?
final Set<String> set = new HashSet();
//A
new Thread(new Runnable(){
public void run(){
while(true){
//user adds or remove items to set
}
}
}).start();
new Thread(new Runnable(){
public void run(){
while(true){
for(String s : set){
//do stuff
}
}
}
}).start();
Этоочень общий сценарий должен быть шаблон проектирования, чтобы справиться с этим