java - 在 servlet 中,我想在另一个线程运行时有一个 response.print()

标签 java multithreading servlets

我有一个必须在后台工作的笨重对象,我创建了一个 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/

相关文章:

具有事件处理功能的 Java Swing

Javah在类B上操作时无法识别类(B)中提到的类(A)

java - 是否有可能(以及我如何)找出哪个类在 Java 中创建了一个命名线程?

android - RocksDB IO错误: lock db/LOCK: No locks available

java - 如何将 testNG 实例传递到另一个类

java.lang.NoClassDefFoundError : org/springframework/web/servlet/support/RequestDataValueProcessor

java - Google App Engine (Java) 上的 Struts 2 问题 - javax.swing.tree.TreeNode 是受限制的类

java - RelativeLayout 和 EditText 错误

c# - 工作线程和后台工作线程之间的区别?

servlets - 我正在寻找一种使用 JSch 创建异步和无状态 ssh 连接的方法?