2

为什么这些方法

 java.lang.Thread.currentThread(),
 java.lang.Thread.sleep(),

 java.lang.Object.notify(),

 java.lang.Object.wait()

 of Thread & Object class are not implemented in java API's itself?

为什么需要制作原生方法,它们是 C/C++ 编程语言的一部分?

这背后是否有任何区域,或者java无法提供良好的性能?

4

3 回答 3

9

您将如何用 Java 编写导致当前线程休眠的代码?在某些时候,您需要委托本机代码,因为它是提供和控制线程的操作系统,而不是 Java。

它可能会帮助您理解在某个级别上,JVM 本身是用本机代码编写的,因此它可以以特定于操作系统和机器的方式与运行在其上的每个操作系统进行对话。

于 2012-08-28T18:30:29.237 回答
0

Java API本身没有实现是什么意思......

它是 Java API 的重要组成部分......我想你不明白 API 是什么意思......

现在的情况下Threads,它取决于运行 Java 程序的操作系统......线程由不同的操作系统以不同的方式处理......例如sleep()在 Window 和 Linux 中具有不同的时间实现......

于 2012-08-28T18:32:45.510 回答
0

添加到语言比添加到库要困难得多。您可以轻松地将方法添加到类中,但添加关键字要困难得多。出于这个原因,Java 试图只将绝对最小值添加到语言中,并且可以在库中完成的任何事情都是以这种方式完成的。

使用库而不是添加到语言中的另一个原因是,在 Java 1.0 中使用 sleep()、wait() 或 notify() 似乎是个好主意,通过添加并发库在 Java 5.0 中得到了改进/替换,所以你这些天不会使用这些方法,并且用您不再使用的语言制作元素将是一种浪费。

于 2012-08-28T19:48:40.387 回答