<%@ page isThreadSafe="true" %> This implies that the JSP page author would take the full responsibility of making the JSP thread safe, which means the author would have necessary synchronized blocks. The container will not provide any help [help = make jsp implement SingleThreadModel marker interface].
When i write <%@ page isThreadSafe="false" %> means i don't know how to make the JSP thread safe and i leave everything to the container. Now when container translates the JSP to servlet, it makes the servlet to implement the SingleThreadModel with this every client request will have their own instances of the servlet hence making the JSP thread safe.
The Servlet 2.4 specification deprecates SingleThreadModel, which is the most common mechanism for JSP containers to implement isThreadSafe. Page authors are advised against using isThreadSafe, as the generated Servlet may contain deprecated code.