Сам сервлет не является нитью.Контейнер поддерживает один экземпляр класса сервлета, и каждый запрос (поток) вызывает один и тот же объект сервлета.Таким образом, экземпляры сервлета распределяются между потоками.В псевдокоде это может выглядеть так:
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);
}
}
Без сомнения, на самом деле это будет намного, намного, намного сложнее: -)
Кстати: вот почему ваши классы сервлетовдолжен быть безопасным для потоков!