public class IntermediateMessage {
private final ReentrantReadWriteLock readWriteLock = new ReentrantReadWriteLock();
private final Lock read = readWriteLock.readLock();
private final Lock write = readWriteLock.writeLock();
private volatile double ratio;
public IntermediateMessage(){
this.ratio=1.0d;
}
public IntermediateMessage(double ratio){
this.ratio = ratio;
}
public double getRatio(){
read.lock();
try{
return this.ratio;
}
finally{
read.unlock();
}
}
public void setRatio(double ratio){
write.lock();
try{
this.ratio = ratio;
}
finally{
write.unlock();
}
}
}
私はこのオブジェクトを持っています。アプリケーションにこのオブジェクトのインスタンスがあり、1 つのスレッドが比率変数に書き込み、他のスレッドが比率を読み取っています。比率変数を保護するこれは正しい方法ですか? ratio を volatile として宣言する必要がありますか?