我正在看看Java的交付代碼Deflater。我注意到訪問本地創建的ZStreamRef
對象的所有方法都在同步對它的訪問。例如:本地創建的Java對象是否需要同步訪問?
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
是線程安全的。是否需要在訪問它們之前同步本機創建的對象?