Java中的懒惰编程



我的问题很简单。我不理解下面的并发编程练习。所以问题基本上是我必须在这里做什么:

public class Point {
 private final double x, y;
 private double distance; // Hinweis: sqrt (x*x+y*y);
 public Point(final double x, final double y) {
   this.x = x;
   this.y = y;
   this.distance = -1; // Lazy: Könnte u.U. nie benötigt werden
 }
 public double getX() {    return x;   }
 public double getY() {    return y;   }
 public double getDistance() {
...???
}
}

文本说:Lazy Evaluation - getDistance()应该给出从点到原点的距离。不应通过初始化设置距离,也不应在每次调用时反复计算距离(因为x和y距离是恒定的)。

他们是要我在这里使用Futures吗?

谨致问候。

下面的代码只计算一次距离。

你确定这个问题是关于并发性的吗?如果两个线程同时调用getDistance(),可能会计算两次,但这并不是真正的开销。但是,如果无论如何都必须只计算一次距离,那么您需要使用public synchronized double,这里有更多信息。

private Double distance; // changed from double to Double so it's nullable
public double getDistance() {
    if (distance == null) {
        distance = <calculate distance here>
    }
    return distance;
}

相关内容

  • 没有找到相关文章

最新更新