Javaで怠惰なサプライヤを実装するための正しいパラダイムまたはユーティリティクラス(既存のクラスを見つけることができないようです)は何ですか?Javaで怠惰なサプライヤを実装する
コンピューティング/キャッシュ後の動作を処理し、計算の動作を個別に指定できるものが必要です。
abstract public class LazySupplier<T> implements Supplier<T>
{
private volatile T t;
final private Object lock = new Object();
final public T get() {
if (t == null)
{
synchronized(lock)
{
if (t == null)
t = compute();
}
}
return t;
}
abstract protected T compute();
}
それは私にはうまく見える、あなたを悩ますものは何ですか? –
私は、正しいことを確かめるための正しい手順を取らない限り、並行性はあなたが混乱するものではないことを知っています。 –
ここに示されているコード例は二重ロックです。http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html –