同时更新列表中的对象

时间:2014-11-28 07:51:47

标签: java spring concurrency

我想知道是否可以同时更新列表中的对象。例如,如果我有一个游戏列表(假设我有数千个这样的游戏)状态为“已启动”。根据游戏开始的时间我可以选择将状态更改为“END”,如果它在一段时间后经过,例如30秒。

这是我使用spring的例子

class Game{
  Date startTime;
  String status;

  //setters and getters
}

class MyUpdateService{

 private Dao dao;

 public void updateActiveGames(){
   List<Games> games = dao.getActiveGames();

   for(Game g : games){
       if(//current time >= 30 secs after startTeime){
          g.setStatus("ENDED");
          dao.update(g);
       }
   }

 }

}

现在如果列表有数千个游戏对象,如果我使用for循环,列表末尾的游戏可能会传递30秒,所以我希望它同时更新它们。

1 个答案:

答案 0 :(得分:0)

我会在您的DAO中执行批量更新。 例如:

Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND,-30);
dao.updateStatusWithStartTime(cal.getTime(),"ENDED");

百里