-
关于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)。...
通过源码,开发者可以了解哪些方法是native方法,哪些操作可能导致系统调用,从而避免不必要的性能瓶颈。例如,了解`String`类的不可变性,以及它的`intern()`方法的作用,可以帮助优化字符串处理。 7. **调试与...
OpenJDK 1.6是Java Development Kit的一个开源实现,它是Java编程语言和Java平台标准版(Java SE)的一部分。OpenJDK项目的目标是提供一个免费、开源的Java实现,鼓励社区参与和透明度,使得开发者可以查看并修改源...
接下来是OpenJDK8,它是Java SE 8的开源实现,增加了Lambda表达式、方法引用、Stream API、Date和Time API等新特性。在Ubuntu上安装OpenJDK8的步骤与安装OpenJDK7类似: ```bash sudo apt-get update sudo apt-get ...
OpenJDK 6是Java开发工具包的一个开源实现,它为开发者提供了运行和构建Java应用程序所需的环境。在Linux操作系统上,OpenJDK 6扮演着与Oracle JDK相似的角色,但它是免费的,并且遵循GNU General Public License...
3. **OpenJDK 8**: OpenJDK 8 是 OpenJDK 的一个重大版本,引入了许多关键特性,如 Lambda 表达式、方法引用、Stream API、默认方法等,这些都极大地提高了 Java 语言的生产力和性能。 4. **Windows x86_64**: 这个...
openjdk 8 的源代码包,其中包含了native部分的源代码(c语言编写),在使用集成开发环境查看源代码时,无法查看到的native源码可以在这里找到。
OpenJDK 1.7,也被称为Java Development Kit (JDK) 7,是由OpenJDK社区开发的一个开源实现,它是Java平台标准版(Java SE)的免费版本。这个版本的OpenJDK专为Windows 64位操作系统设计,因此在64位Windows环境下...
OpenJDK是Java Development Kit的开源实现,由甲骨文公司(Oracle)和其他贡献者共同维护。1.8是Java的一个重要版本,它包含了丰富的特性和性能优化。 描述中提到的"windows 64位操作系统 jdk 直接解压,配置环境...
OpenJDK8 with JavaFX 是一个开放源代码的Java开发工具包,它包含了Java标准版(Java SE)的实现,以及JavaFX库。OpenJDK是Oracle JDK的开源替代品,由OpenJDK社区维护和开发,而JavaFX是构建桌面、移动和Web应用...
openjdk11 full javafx
OpenJDK(Open Source Java Development Kit)是一个开源的Java开发工具包,它实现了Java虚拟机(JVM)和Java类库,是Java应用程序的基础。OpenJDK是Oracle JDK的替代品,两者在功能上大体相似,但OpenJDK遵循GPL...
OpenJDK(Open Source Java Development Kit)是Java平台标准版(Java SE)的一个开源实现,由甲骨文公司和其他贡献者共同维护。这个版本1.8,也称为Java 8,是Java历史上的一个重要版本,它引入了许多新特性,如...
OpenJDK是一个开源实现的Java SE(Standard Edition)平台,它由Oracle公司发起,但现在由一个广泛的开发者社区共同维护和开发。 **1. OpenJDK和Oracle JDK的区别** OpenJDK是Java开发和运行环境的基础,它是免费且...
OpenJDK,全称为Open Java Development Kit,是Java开发工具包的一个开源实现,它为开发者提供了构建、运行Java应用程序所需的全部工具。本文将重点讨论OpenJDK 1.8.0_181版本,它是Oracle JDK 8的一个分支,对于...
OpenJDK 18是Java开发的一个开源实现,由OpenJDK社区维护并遵循GNU General Public License (GPL)。这个版本的OpenJDK是针对Windows x64平台的,其安装包为“openjdk-18+36_windows-x64_bin.zip”。此压缩文件包含了...
OpenJDK项目是由甲骨文公司发起并维护,旨在提供一个免费、开源的实现,与Oracle JDK保持兼容。OpenJDK 21是该系列的一个特定版本,它可能包含了新功能、性能优化以及安全更新。 首先,让我们深入了解一下OpenJDK。...