Rod Sinclair wrote:synchronized code can only be entered by one thread at a time.
That's also true for the CPU: can only be entered by one thread at a time. So different threads updating different records at the same time is not possible, because only 1 thread will have CPU time at any given time (maybe it would be possible when you have multiple CPUs, but I don't have an idea how the JVM scheduler does his work when having multiple CPUs).
But if you want a more performant solution, you can always use synchronized blocks instead of synchronized methods. But you will always have a synchronized block, because you don't want your database file to be corrupted.
If you don't synchronize these 2 statements and make it an atomic operation, you risk a thread being kicked from CPU after moving the file pointer to the desired location, and another thread moves the file pointer to another location (and reads a record), and this thread writes to a wrong location (updating a completely wrong record)