java - native 创建的 Java 对象是否需要同步才能 Access ?

标签 java ms-access object native synchronized

我正在查看 Java 为 Deflater 提供的代码.我注意到所有 Access native 创建的 ZStreamRef 对象的方法都在同步 Access 它。例如:

public void setLevel(int level) {
if ((level < 0 || level > 9) && level != DEFAULT_COMPRESSION) {
    throw new IllegalArgumentException("invalid compression level");
}
    synchronized (zsRef) {
        if (this.level != level) {
            this.level = level;
            setParams = true;
        }
    }
}

然而,Javadoc 没有提到 Deflater 是线程安全的。是否需要在 Access 之前同步 native 创建的对象?

最佳答案

文档没有说明它需要是线程安全的,而且它可能不是在所有平台上都是线程安全的。但是在 OpenJDK 中是这样。不确定它是否非常有用,但是因为它是有状态的并且几乎肯定需要外部锁定才能在线程之间共享流。 (我怀疑这是个好主意)

关于java - native 创建的 Java 对象是否需要同步才能 Access ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8110250/

相关文章:

java - udp文件传输项目-是否必须进行错误检查?

java - G1算法中的 memset 有什么用?

ms-access - 字符串整数转换?编译器错误消息: CS1502

javascript - 从 javascript 对象中删除冗余属性

php - 无法访问 php 中的数组值

javascript - 从对象中提取单个键到数组

Java - 从 url 读取页面源返回未知字符

java - 使用 spring-boot 在 Jpa 查询中出错

SQL 查询根据 Access 表中的相同 ID 对列数据求和

vba - 逐个字母比较 2 个相似的字符串并突出显示差异