0

特定の行がある場合、スレッドを実行する前に 1 ミリ秒待機する必要があります。どうすればこれを達成できますか。必要な行の前に次の行を使用していますが、これが正しいかどうかはわかりません。

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());
}
4

1 に答える 1

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;
}
于 2012-07-06T10:09:03.733 に答える