java - 如何在正在运行的线程中持久保存请求对象?

标签 java multithreading scope

我将 HttpServletRequest 对象传递给线程,然后返回它。该线程将执行很长时间,但在此之前我返回请求。因此我无法访问 Thread 中的 HttpServletRequest 对象。那么有没有办法在整个线程执行过程中保留 HttpServletRequest 对象,即使在完成其 session 之后也是如此?

 public String execute(HttpServletRequest request){
       Runnable r = new RunnableImplementation(request);
       Thread t = new Thread(r);
       t.start();
       return "Success";
    }

注意:RunnableImplementation 的构造函数初始化其本地 HttpServletRequest 对象,然后在其 run() 方法中使用它。

最佳答案

您不需要该请求。您需要在请求中提供一些信息。

只需从请求中提取它们并用它们构造一个对象并将其传递给您的可运行对象。

这里是一个示例代码:

MyThreadRequest myThreadRequest = new MyThreadRequest();
myThreadRequest.setUser((User) request.getAttribute("user"));
Thread t = new Thread(new RunnableImplementation(myThreadRequest));

关于java - 如何在正在运行的线程中持久保存请求对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32778800/

相关文章:

c# - 如何在 C# Winform 中锁定应用程序 GUI

c++ - 对象值不能改变

php - 在 PHP 的匿名函数中包装变量

python - Python 作用域规则是否符合词法作用域的定义?

java - 如何删除我的 Jetty webapp url 的根元素?

java - Google App Engine 中的批量实体删除

mysql - 提高 MySQL 性能

java - Android ListView NullPointerException 使用 pulldowntoRefresh?

java - 为这种情况动态生成线程 Java

c++ - 我们可以称程序中的潜在障碍吗