先看下面的程序
public class NativeTest
{
public static void main(String[] args)
throws Exception
{
long start = System.currentTimeMillis();
Thread.sleep(10);
System.out.println(System.currentTimeMillis() - start);
}
}
运行输出0、15或16,并非输出10;那是因为sleep()方法是一个native方法,这个方法的实现需要依赖它所在的平台。在WIN XP系统中计时器没法精确到1ms,所以程序也无法暂停1ms。
总结:
java语言是跨平台,但是native方法是依赖具体平台的,在JDK中类似的native方法还有,所以在使用中还是要考虑的平台的相关差异性。
public class NativeTest
{
public static void main(String[] args)
throws Exception
{
long start = System.currentTimeMillis();
Thread.sleep(10);
System.out.println(System.currentTimeMillis() - start);
}
}
运行输出0、15或16,并非输出10;那是因为sleep()方法是一个native方法,这个方法的实现需要依赖它所在的平台。在WIN XP系统中计时器没法精确到1ms,所以程序也无法暂停1ms。
总结:
java语言是跨平台,但是native方法是依赖具体平台的,在JDK中类似的native方法还有,所以在使用中还是要考虑的平台的相关差异性。