1.8 亞毫秒級的線程休眠
Java1.1+
正如上一節(jié)中所討論的,Java 5在System類中添加了一個nanoTime方法來確保時間度量能夠適應(yīng)更快的系統(tǒng)。即使在早期版本的Java中,線程可以具有少于1毫秒的休眠時間。回想一下Java的線程機制有一個sleep方法,該方法采用一個int參數(shù)來表示以毫秒計量的休眠時間。此外還有一個sleep方法,它接受一個毫秒?yún)?shù)和一個以納秒計量的時間參數(shù)。如果將毫秒時間設(shè)為零,那么線程將會休眠指定的納秒(ns)數(shù)。
public class MyThread extends Thread {
public void run() {
try {
sleep(10); // sleep for 10 milliseconds
sleep(0, 10000); // sleep for 0.01 milliseconds (10000 ns)
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
|
就像前面介紹的nanoTime方法一樣,該方法存在同樣的問題。由于操作系統(tǒng)特性、機器處理速度和系統(tǒng)負載的不同,實際的休眠時間可能與期望的不同。