因為當save時,會出錯就表示鎖了。
比如下面的方法,要catch一下,如果保存報錯,就表示另一個線程保存的時候鎖住了。
public List<MailQueue> updateStatusAndFindMailList(int numOfEmailsPerTime) {
List<MailQueue> list = this.mailQueueDao.findMailListAndLock(numOfEmailsPerTime);
for(MailQueue mailQueue:list){
try{
mailQueue.setSendStatus(MailQueue.STATUS_SENDING);
this.saveOrUpdate(mailQueue);
}catch(Exception e){
//如果保存失敗,表示是給另一個線程保存了。
list.remove(mailQueue);
}
}
return list;
}