Put it this way.. it is not so much a matter of 'are threads necessary'... as it is of ' you will get threads, because servlets are multithreaded'
So if you have database access code, you must decide whether
you should make this a synchronized block or not. I'm not really that knowledgable about databases, but I understand there is such a thing as a read lock.
So imagine that one user hits the servlet and enters the method that reads from the database. A millisecond later, a second user also makes the same request. Will the second user's read fail because the first user has a read lock on that table? Hopefully not, maybe I'm shouting "the sky is falling, the sky is falling."