1. 程式人生 > >spring使用Async實現非同步或者延遲的操作

spring使用Async實現非同步或者延遲的操作

對於我們的web專案,一般來說,我們都是同步執行一些資料,所謂同步就是按照順序,執行完這個然後有序的執行下一個,但是有時我們需要延遲執行一些資料,並且這些資料我們不需要實時的返回的,比如是註冊成功,我們會返回一封郵件給使用者,這個郵件我們可以在使用者註冊成功後的5分鐘,或者10分鐘後向使用者傳送,那麼我們就需要一個延遲函式。一般來說,我們可能直接就會使用new thread開啟一條執行緒來實現來實現,會在Spring mvc或者Struts中這樣實現

new Thread(new Runnable() {

@Override

public void run() {

try {

Thread.sleep(5000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}).start();

但是從spring 3.0版本開始,我們可以直接通過Async註解來實現我們的延遲操作了。

要使用Async註解,首先在applicationContext.xml加入如下程式碼

<task:annotation-driven/>

@ResponseBody

@RequestMapping(value = “/register”)

public String register(String username,String passwd) {

JSONObject jsonObject=new JSONObject();

jsonObject.put(“status”, 1000);

jsonObject.put(“username”, username);

AsyncSendMail(username);

return jsonObject.toString();

}

@Async

public void AsyncSendMail(String touser){

try {

Thread.sleep(5000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//執行傳送郵件的操作

System.out.println(“touser==”+touser);

}