【问题标题】:Spring MVC Java multithreading: perform an SQL statement in the backgroundSpring MVC Java多线程:在后台执行一条SQL语句
【发布时间】:2013-07-06 03:41:16
【问题描述】:

我对 Java 多线程还很陌生。所以我希望有这方面经验的人能给我一个他们以前成功使用过的例子。

我的场景: 我有一个 Spring MVC 网络应用程序。 Web 应用程序中的控制器通过 Ajax 调用并返回一个 json 对象。在进入控制器和返回之间,我想在后台执行一条 SQL 语句。这意味着无论 SQL 是否完成(或生成异常),都应该发生 JSON 返回。

任何帮助或建议将不胜感激。

@RequestMapping("/persist")
public @ResponseBody MyClass persist(HttpSession session, HttpServletRequest request) {

   MyClass obj = new MyClass();
   obj.setTitle("This is just a test");

   // Want to make into a background process
   MyDAO mine = new MyDAO();
   mine.performSQL();        

   return obj;    
}

【问题讨论】:

    标签: java multithreading servlets spring-mvc background


    【解决方案1】:

    如果您使用的是 Spring 3.1+,请查看 @Async 注释。这是管理和抽象 ThreadPool 的一种非常简单的方法。

    【讨论】:

      【解决方案2】:

      您可以在 Java 1.5 及更高版本中使用类似的东西

      private ExecutorService executorService; // Initialize
      
      @RequestMapping("/persist")
      public @ResponseBody MyClass persist(HttpSession session, HttpServletRequest request) {
      
         MyClass obj = new MyClass();
         obj.setTitle("This is just a test");
      
         // Want to make into a background process
         executorService.execute(new Runnable() {
             public void run() {
                MyDAO mine = new MyDAO();
                mine.performSQL(); 
             }
         });          
      
         return obj;    
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多