0

私はJavaマルチスレッドにかなり慣れていません。ですから、この主題に関する経験のある人が、以前に成功した例を教えてくれることを期待していました.

私のシナリオ: 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;    
}
4

2 に答える 2

2

Spring 3.1+ を使用している場合は、@Async アノテーションを見てください。これは、ThreadPool を管理および抽象化するための優れた単純な方法です。

于 2013-07-06T03:54:15.550 に答える
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;    
}
于 2013-07-06T03:52:16.057 に答える