因为当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;
}