Вы можете использовать существующие методы Java из библиотеки Colt. Вот небольшой пример, в котором используется синтаксис Python (чтобы сделать код примера небольшим, я использую Jython):
from cern.colt.list import IntArrayList
a=IntArrayList()
a.add(1); a.add(2) # add two integer numbers
print "size=",a.size(),a
a.beforeInsert(0, 10) # add 10 before index 0
print "size=",a.size(),a
Вы можете использовать программу DataMelt для запуска этого кода. Вывод приведенного выше кода:
size= 2 [1, 2]
size= 3 [10, 1, 2]
Как видите, 10 вставляется перед 1 (и размер увеличивается) Не стесняйтесь менять кодировку на Java, т.е. импортировать этот класс как [116 ]
import cern.colt.list.IntArrayList
IntArrayList a= new IntArrayList()
Если у Вас есть подлинная суть вопроса с параллельными обновлениями на тех же данных, то Вы могли бы рассмотреть выполнение всей операции в транзакции - т.е. получение данных и фиксация их. Пока Вы рассматриваете получение/обновление/фиксирование как недолгую, атомарную операцию (т.е. Вы не приостанавливаетесь для ввода данных пользователем в середине), это должно быть в порядке.
В частности, с уровнем сериализуемой изоляции никто не может обновить данные, что у Вас есть чтение, соединяются (т.е. что-либо, что Вы запросили). Единственная проблема состоит в том, что это могло бы вести для заведения в тупик сценариев, если различные запросы считывают данные в различных заказах. AFAIK, нет никакого способа заставить LINQ-SQL выпускать (UPDLOCK) подсказку, которая является позором.
Или TransactionScope или SqlTransaction сделали бы, пока они установлены как сериализуемая изоляция (который является значением по умолчанию для TransactionScope).
можно хотеть изучить Платформу Объекта, которая выполняет все как транзакцию. Вот два подкаста, которые могут также быть интересными о Платформе Объекта.
Для этого вида ситуаций, т.е. где больше чем один пользователь может хотеть внести изменения в тот же record/customer/order/whatever, лучше создать "блокировку" в прикладную логику, а не блокировки базы данных использования.
Используя блокировки DB для решения логической блокировки данных собирается подарить Вам "кучу" новых проблем. Лучшее решение состоит в том, чтобы иметь столбцы и/или таблицы, где можно указать, что порядок/клиент/и т.д. редактируется [пользователем], до когда это заблокировано и т.д. Запросите ту таблицу (или столбцы), чтобы проверить, доступен ли клиент/порядок/вещь для редактирования прежде, чем позволить другому пользователю редактировать ее.
См.: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3984968&SiteID=1