-
关于Openjdk FileInputSteam native 方法 available 的实现细节0
我想了解FileInputSteam native available 的实现细节,然后我下载openjdk,打开FileInputStream.c ,主要代码是:
关于这段代码谁对C了解的,能帮忙解释一下吗?
if (IO_Available(fd, &ret)) {
if (ret > INT_MAX) {
ret = (jlong) INT_MAX;
}
// 这个在jlong_md.h 里面,转换成int
return jlong_to_jint(ret);
}
JNU_ThrowIOExceptionWithLastError(env, NULL);
return 0;
}
我想了解available 方法是通过seek 移动的方式?还是获取文件描述的方式 获得流的大小,以及发生阻塞的情况,会出现什么问题,因为JDK 解释available 不保证返回的正确性,也就是说当文件流1000字节,会有返回几百字节的发生吗?
想了解这个情况发生的场景以及具体代码的原因,因此请大神们指点下这里的实现细节,最好能贴一下代码,不要纯理论知识。
问题补充:方法是:
JNIEXPORT jint JNICALL
Java_java_io_FileInputStream_available(JNIEnv *env, jobject this) {
jlong ret;
FD fd = GET_FD(this, fis_fd);
if (fd == -1) {
JNU_ThrowIOException (env, "Stream Closed");
return 0;
}
if (IO_Available(fd, &ret)) {
if (ret > INT_MAX) {
ret = (jlong) INT_MAX;
}
return jlong_to_jint(ret);
}
JNU_ThrowIOExceptionWithLastError(env, NULL);
return 0;
}2014年4月18日 11:22
目前还没有答案
相关推荐
在OpenJDK 8中,有一部分源代码是专门针对Windows操作系统的本机(Native)方法实现的。这部分代码位于名为"openjdk-8-src-b132-03_mar_2014-windows-native.zip"的压缩包中,它是OpenJDK在Windows平台上的关键组成...
快速下载 openjdk 方法 快速下载 openjdk 方法 快速下载 openjdk 方法 快速下载 openjdk 方法 快速下载 openjdk 方法
使用`native`关键字标记的方法表示其实现将在本地代码中提供,例如: ```java public class NativeDemo { public native void callCFunction(); static { System.loadLibrary("native-lib"); } } ``` 这里的`...
标题中的“openjdk 资源包下载和解包的方法”指的是如何获取并处理OpenJDK(Open Source Java Development Kit)的软件包。OpenJDK是Java编程语言的一个开源实现,它提供了Java运行环境(JRE)和开发工具集(JDK)。...
OpenJDK8 with JavaFX 是一个开放源代码的Java开发工具包,它包含了Java标准版(Java SE)的实现,以及JavaFX库。OpenJDK是Oracle JDK的开源替代品,由OpenJDK社区维护和开发,而JavaFX是构建桌面、移动和Web应用...
接下来是OpenJDK8,它是Java SE 8的开源实现,增加了Lambda表达式、方法引用、Stream API、Date和Time API等新特性。在Ubuntu上安装OpenJDK8的步骤与安装OpenJDK7类似: ```bash sudo apt-get update sudo apt-get ...
通过源码,开发者可以了解哪些方法是native方法,哪些操作可能导致系统调用,从而避免不必要的性能瓶颈。例如,了解`String`类的不可变性,以及它的`intern()`方法的作用,可以帮助优化字符串处理。 7. **调试与...
OpenJDK 1.6是Java Development Kit的一个开源实现,它是Java编程语言和Java平台标准版(Java SE)的一部分。OpenJDK项目的目标是提供一个免费、开源的Java实现,鼓励社区参与和透明度,使得开发者可以查看并修改源...
3. **OpenJDK 8**: OpenJDK 8 是 OpenJDK 的一个重大版本,引入了许多关键特性,如 Lambda 表达式、方法引用、Stream API、默认方法等,这些都极大地提高了 Java 语言的生产力和性能。 4. **Windows x86_64**: 这个...
OpenJDK 1.7,也被称为Java Development Kit (JDK) 7,是由OpenJDK社区开发的一个开源实现,它是Java平台标准版(Java SE)的免费版本。这个版本的OpenJDK专为Windows 64位操作系统设计,因此在64位Windows环境下...
1. JVM实现:通过阅读OpenJDK6的源代码,开发者可以深入理解JVM如何解析和执行字节码,以及垃圾回收的实现细节。 2. 类库设计:OpenJDK6的源代码包含了丰富的类库,比如集合框架、I/O流、网络通信等,这些都是Java...
openjdk 8 的源代码包,其中包含了native部分的源代码(c语言编写),在使用集成开发环境查看源代码时,无法查看到的native源码可以在这里找到。
OpenJDK 6是Java开发工具包的一个开源实现,它为开发者提供了运行和构建Java应用程序所需的环境。在Linux操作系统上,OpenJDK 6扮演着与Oracle JDK相似的角色,但它是免费的,并且遵循GNU General Public License...
OpenJDK,全称为Open Java Development Kit,是Java开发工具包的一个开源实现,它为开发者提供了构建、运行Java应用程序所需的全部工具。本文将重点讨论OpenJDK 1.8.0_181版本,它是Oracle JDK 8的一个分支,对于...
OpenJDK是Java Development Kit的开源实现,由甲骨文公司(Oracle)和其他贡献者共同维护。1.8是Java的一个重要版本,它包含了丰富的特性和性能优化。 描述中提到的"windows 64位操作系统 jdk 直接解压,配置环境...
openjdk11 full javafx
2. 方法引用和构造器引用:在`jdk/src/share/classes/java/lang/invoke/MethodHandles.java`中,可以找到关于方法引用和构造器引用的相关实现。 3. Stream API:`jdk/src/share/classes/java/util/stream`目录下的...
OpenJDK 17.0.2 是一个开放源代码实现的Java Development Kit,它遵循Java SE(标准版)平台规范。此版本专为macOS x64体系结构设计,确保在苹果操作系统上提供高性能和稳定性。OpenJDK项目由全球多个组织和社区成员...
OpenJDK是一个开源实现的Java SE(Standard Edition)平台,它由Oracle公司发起,但现在由一个广泛的开发者社区共同维护和开发。 **1. OpenJDK和Oracle JDK的区别** OpenJDK是Java开发和运行环境的基础,它是免费且...
OpenJDK(Open Source Java Development Kit)是Java平台标准版(Java SE)的一个开源实现,由甲骨文公司和其他贡献者共同维护。这个版本1.8,也称为Java 8,是Java历史上的一个重要版本,它引入了许多新特性,如...