先看下面的程序
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方法还有,所以在使用中还是要考虑的平台的相关差异性。
本文通过一个简单的Java程序示例,探讨了Java中的native方法及其跨平台特性。文章指出,尽管Java语言本身具备良好的跨平台能力,但native方法的实现却依赖于具体的平台,这可能导致在不同操作系统上的行为差异。
548

被折叠的 条评论
为什么被折叠?



