title: Synchronized DB Access in Java
body: <p>I have a database which contains e-mails to be sent. I'm using multiple threads to send out these e-mails. The approach I'm using is that each thread will query the database, get N e-mails in memory and mark those as being sent. Another thread will see those N e-mails as marked and move on and fetch the next N entries.</p>
  
  <p>Now this isn't working as before thread1 can update the entries as being sent, thread2 queries for the e-mails and thus both threads end up getting the same set of e-mails.</p>
  
  <p>Each thread has its own connection to the database. Is that the root cause of this behaviour? Should I be just sharing one connection object across all the threads? 
  Or is there any better approach that I could use?</p>