According to HFSJ they are, and from what I have learnt, only one thread at a time has access to a particural request object, that one thread that is currently "working" with that request (although would be very appreciated for answer to my another question below). Please check this link, they claim request attributes are not thread-safe.
My another questions is, if I dispatch the request to another servlet, do I still have a reference to the request object that I have dispatched? And am I able to set attributes for that request? When I tested it, set an attribute after I had dispatched the request to the JSP, servlet compiled, but I got null like there was no such attribute. So it seems I'm not, but would like to hear more about it. Thank you.
Hmmm... my inkling says they would not be thread-safe but in the real world it shouldn't matter too much. If you're crazy enough start kicking off multiple threads that all play with request objects, you probably have worse problems to deal with like how to keep your head on straight.
Your other question, it matters what you mean by "dispatch". If your dispatch forwards the request, everything stays in tact. But a redirect will create a new request and the old one goes bye-bye. Oh, and you always should have the ability to set and get attributes on a request.