对于一个可运行的对象,它需要实现Runnable
接口或扩展Thread
类,然而,似乎并没有HttpServlet
做任何这些。
怎么会HttpServlet
可以穿线还是我弄错了?
Servlet 本身不是线程。容器维护 servlet 类的一个实例,每个请求(线程)调用同一个 servlet 对象。因此 servlet 实例是跨线程共享的。在伪代码中,它可能看起来像这样:
class ServerThread extends Thread {
private javax.servlet.Servlet servlet;
private javax.servlet.ServletRequest req;
private javax.servlet.ServletResponse res;
public ServerThread(javax.servlet.Servlet servlet, /* request and response */) {
this.servlet = servlet;
this.req = req;
this.res = res;
}
@Override
public void run() {
this.servlet.service(req, resp);
}
}
毫无疑问,实际上它会非常非常复杂:-)
顺便说一句:这就是您的 servlet 类必须是线程安全的原因!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)