我有一个必须在后台工作的笨重对象,我创建了一个 servlet 来调用这个对象,为了运行该对象,我在 servlet 中实现了 Runnable 接口(interface),如下所示:
public class myObject extends HttpServlet implements Runnable
{
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
res.print("<br/> running...");
res.flush(); //doens't help
Thread t = new Thread(this);
t.run();
}
public void run()
{
res.print("<br/> running...");
res.flush();//doesn't helper either
cumbersomeObject.workHard();
}
}
我怎样才能打印这个简单的行,然后向用户发送 200 状态,然后我的 servlet 在后台愉快地工作?
最佳答案
将t.run()
更改为t.start()
,您的线程不是在后台运行,而是在前台阻塞。顺便说一句,这是如何编译的? run()
如何访问 res
变量?
但是,您似乎正在尝试通过线程中的 res
响应对象向用户发送一些数据。这是行不通的,请参阅 HttpServletResponse seems to periodically send prematurely进行详细讨论。
关于java - 在 servlet 中,我想在另一个线程运行时有一个 response.print(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9650889/