这个问题肯定是要用定时任务的,至于定时任务框架,单jvm的可以使用quartz,每次执行里面可以使用线程池,当每个线程执行完了的时候是自动结束的,也就是说再定时任务第一次没有执行完的时候,下次时间到达定时任务会等待,直到第一次的定时任务的所有线程执行完毕,然后下个定时任务周期继续执行,以此循环。。。
如果你数据量很大的话,可以使用分布式的定时任务,比如淘宝的开源框架tbscheduler,他可以保证一系列不断变化的任务快速的分配到多个jvm的不同线程组的n个线程组独立执行,切不会重复执行数据。