А не встречал ли кто библиотеку, реализующую коллекции с поддержкой транзакций? Причём не обязательно даже чтобы поддержка concurrency была. Хочется примерно вот такого:
TransactionalList<Integer> list = new TransactionalList<Integer>();
list.begin(); // []
list.begin(); // []
list.add(1); // [1]
assertEquals(1, list.size());
list.commit(); // [1]
list.begin(); // [1]
list.add(2); // [1, 2]
assertEquals(2, list.size());
list.commit(); // [1, 2]
list.rollback(); // []
assertEquals(0, list.size());