Java多线程: Implementing of important methods in Thread class in Native Libraries?

标签 java multithreading java-native-interface

我正在阅读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

https://docs.oracle.com/cd/E19455-01/806-5257/index.html

关于Java多线程: Implementing of important methods in Thread class in Native Libraries?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53039744/

相关文章:

java通过对象属性对常规对象的ArrayList进行排序

c# 多线程 - 写入数据库时​​是否需要锁定?

android - 在 JNI 级别声明的全局变量(非静态)能存活多久?

java - 调用 JNI_CreateJavaVM 使程序崩溃

java - 将 Realm 变量从其他类传递到适配器中的 getView

java - 将 JSlider 添加到具有 GridLayout 的 JFrame (Java)

Java 线程以延迟结束

multithreading - 使 Smalltalk 并行化的难点是什么?

java - JNI中如何传递参数

java - SOAP 网络服务和 RESTFUL 网络服务之间的区别