Предположим, у меня есть ArrayList<Foo>
. Этот список очень часто изменяется. Даже значения элементов в списке будут иметь значения, которые изменяются все время. Все изменения в этом списке выполняются основным потоком.Java Deep Clone Список объектов в отдельной теме Атомно
Как бы я клонировал список (глубокий уровень, элементы также должны быть клонированы) в отдельном потоке таким образом, чтобы он не задерживал основной поток (или, по крайней мере, не сильно), и скопировал список содержит моментальный снимок во времени (я думаю, что этот термин является атомарным) всех объектов Foo, там есть значения, идентичные исходному списку (снова в один снимок времени).
Заранее спасибо. Я знаю, что решение связано с синхронизацией, но я не согласен со всеми вышеперечисленными критериями.
Спасибо за быстрый ответ! Хотя я искал какой-то пример, чтобы привести меня на правильный путь, а не ссылку на книгу. – olta8
CopyOnWriteArrayList, похоже, работает очень хорошо. – olta8
CopyOnWriteArrayList, безусловно, полезен, но не забывайте быть осторожным при изменении самих элементов (т. Е. Foos в CopyOnWriteArrayList); он не спасет вас от проблем с перекрестными потоками ... –