2013-07-06 42 views
0

我对Java多线程相当陌生。所以我希望有这方面经验的人可以给我一个他们之前成功使用过的例子。Spring MVC Java多线程:在后台执行SQL语句

我的情景: 我有一个Spring MVC web应用程序。 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;  
} 

回答

1

您可以使用类似这样的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;  
} 
2

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