如果我有某一行,我希望任何线程在执行之前等待1ms。我怎么能实现这个目标。我在我想要的行之前使用以下行,但不确定这是否正确:
try // wait for 1 millisecond to avoid duplicate file name
{
Thread.sleep(1); //wait for 1 ms
}catch (InterruptedException ie)
{
System.out.println(ie.getMessage());
}
答案 0 :(得分:2)
很少有系统在System.currentTimeMillis()
通话中的分辨率为1毫秒。如果你想等到它发生变化,那就是你应该做的。
long start = System.currentTimeMillis();
while ( System.currentTimeMillis() == start ) {
Thread.sleep(1);
}
或者可能更好一点:
private static long lastMillis = 0;
static synchronized long nextMillis() throws InterruptedException {
long nextMillis;
while ((nextMillis = System.currentTimeMillis()) == lastMillis) {
Thread.sleep(1);
}
return lastMillis = nextMillis;
}