É seguro para um servlet Java gerar threads para satisfazer uma solicitação?
É seguro para o meu servidor Web Java (Tomcat 8) gerar threads em resposta a uma solicitação HTTP? Estou vendo posts e fóruns em que algumas pessoas dizem que éabsolutamente beme outros dizemnão fazer isso.
Meu caso de uso seria algo como isto:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
...
...
final MyResult res = new MyResult();
Thread first = new Thread(new Runnable() {
@Override
public void run() {
// put this into res
}
});
Thread second = new Thread(new Runnable() {
@Override
public void run() {
// put that into res
}
});
first.start();
second.start();
first.join(10000);
second.join(10000);
// return res
}
Quando digo seguro, quero dizer que há algo inerentemente perigoso sobre o que estou propondo com relação à estabilidade do servidor da web. Como o @Burrman aponta, um pool de threads é uma boa ideia aqui, e eu farei isso. Se eu estiver usando um pool de encadeamentos, existem outros problemas em potencial com o contêiner de servlet que eu deveria me preocupar ou precisar resolver?
Suponho que estou pensando em, por exemplo, conexões JDBC. Acredito que é recomendável configurá-lo usando o recurso JNDI etc. e configurá-lo com a configuração do Tomcat. É algo necessário ou recomendado para gerar threads arbitrários como no meu exemplo?