1.8 亞毫秒級(jí)的線(xiàn)程休眠
Java1.1+
正如上一節(jié)中所討論的,Java 5在System類(lèi)中添加了一個(gè)nanoTime方法來(lái)確保時(shí)間度量能夠適應(yīng)更快的系統(tǒng)。即使在早期版本的Java中,線(xiàn)程可以具有少于1毫秒的休眠時(shí)間。回想一下Java的線(xiàn)程機(jī)制有一個(gè)sleep方法,該方法采用一個(gè)int參數(shù)來(lái)表示以毫秒計(jì)量的休眠時(shí)間。此外還有一個(gè)sleep方法,它接受一個(gè)毫秒?yún)?shù)和一個(gè)以納秒計(jì)量的時(shí)間參數(shù)。如果將毫秒時(shí)間設(shè)為零,那么線(xiàn)程將會(huì)休眠指定的納秒(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方法一樣,該方法存在同樣的問(wèn)題。由于操作系統(tǒng)特性、機(jī)器處理速度和系統(tǒng)負(fù)載的不同,實(shí)際的休眠時(shí)間可能與期望的不同。