我正在阅读Thread类,发现多线程的所有主要操作都以native关键字出现。
private native void start0();
private native void setPriority0(int newPriority);
private native void stop0(Object o);
private native void suspend0();
private native void resume0();
private native void interrupt0();
private native void setNativeName(String name);
经过更多研究发现这些都是用 C 语言实现的。 http://hg.openjdk.java.net/jdk6/jdk6/jdk/file/178f954e1fd1/src/share/native/java/lang/Thread.c
我正在尝试寻找原因,为什么Sun/Oracle使用 native 代码来编写如此重要的方法?仅仅是由于性能或内存级别的通信吗?
最佳答案
我认为由于Java是比C更高级的语言,他们在C中实现了这些Thread类方法。因为为了使多线程达到最佳水平,任何人都需要访问操作系统和处理器。为了利用真正的操作系统并发性在单处理器或多处理器上实现更快的应用程序,C 等 native 语言在性能方面优于 Java。以下链接可以帮助您理解这一点。
https://docs.oracle.com/cd/E19455-01/806-3461/6jck06gqe/
https://docs.oracle.com/cd/E19253-01/816-5137/816-5137.pdf
https://docs.oracle.com/cd/E19455-01/806-5257/6je9h032e/index.html
关于Java多线程: Implementing of important methods in Thread class in Native Libraries?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53039744/