你能指望什么?
如果您进入睡眠状态,则一旦您的进程再次可运行,就必须等待线程调度程序再次对其进行调度。
我的意思是如果您进入睡眠状态50秒钟,这并不意味着您的进程将在完全50秒钟内运行,因为它一旦唤醒并可以运行,则必须等待安排到CPU,这需要额外的时间加上您的时间有上下文切换。
您无能为力,无法控制它,因此您无法达到所说的准确性。
对于您的情况,我建议改为旋转循环。
long now = System.currentTimeMillis(); while(now < expectedElapsedTime){ now = System.currentTimeMillis();}


