我试图在循环中每 10 毫秒向数据库插入一次数据。那么我如何在每次插入之间等待[重复]
Posted
技术标签:
【中文标题】我试图在循环中每 10 毫秒向数据库插入一次数据。那么我如何在每次插入之间等待[重复]【英文标题】:I am trying to insert data to the database in every 10 milisecond in a loop. So how can i wait between every inserting [duplicate] 【发布时间】:2021-06-16 14:11:57 【问题描述】: @RequestMapping(value="/save",method = RequestMethod.POST)
public String save(@ModelAttribute("emp") Employee emp)
for(int i=0;i<5;i++)
dao.save(emp);
return "redirect:/viewemp";//will redirect to viewemp request mapping
这里我想在方法之后等待10毫秒:
dao.save(emp);
【问题讨论】:
【参考方案1】:如果你想暂停,请使用java.util.concurrent.TimeUnit
:
TimeUnit.SECONDS.sleep(1);
睡一秒钟或
TimeUnit.MINUTES.sleep(1);
睡一分钟。
由于这是一个循环,这会带来一个固有的问题 - 漂移。每次你运行代码然后睡眠时,你都会偏离运行状态,比如说,每一秒。如果这是一个问题,请不要使用sleep
。
此外,sleep
在控制方面不是很灵活。
对于每秒或延迟一秒运行任务,我会强烈推荐ScheduledExecutorService
和scheduleAtFixedRate
或scheduleWithFixedDelay
。
例如,每秒运行一次方法myTask
(Java 8):
public static void main(String[] args)
final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(App::myTask, 0, 1, TimeUnit.SECONDS);
private static void myTask()
System.out.println("Running");
在 Java 7 中:
public static void main(String[] args)
final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(new Runnable()
@Override
public void run()
myTask();
, 0, 1, TimeUnit.SECONDS);
private static void myTask()
System.out.println("Running");
【讨论】:
以上是关于我试图在循环中每 10 毫秒向数据库插入一次数据。那么我如何在每次插入之间等待[重复]的主要内容,如果未能解决你的问题,请参考以下文章
event.listener("timeupdate") 不等于当前时间/4,因为它在 chrome 中每 250 毫秒运行一次