如何每秒做n次?

Jam*_*sev 7 java performance

假设您必须执行一项任务,并要求20,000每秒执行固定次数(比如说).

你会如何计划活动?

Pet*_*rey 10

每秒20K次,你需要忙着等待下一个间隔.我建议等到下一次它应该运行以消除抖动的影响.

long start = System.nanoTime();
long rate = 20000;
for(long i = 0; ; i++) {

   // do something

   long end = start + i * 1000000000L / rate;
   while(System.nanoTime() < end);
}
Run Code Online (Sandbox Code Playgroud)

您无法使用内置调度程序的原因是最小时间片为100微秒,即每秒10K次,并且许多平台上的最小休眠时间为1毫秒.