【发布时间】:2015-12-11 14:59:43
【问题描述】:
我的问题很简单。我不明白以下并发编程练习。所以问题基本上是我必须在这里做什么:
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。而且它是针对学校/形成的事实并不会自动取消该问题的资格。 -
如果这里的并发性确实是个问题,请“同步”get 函数。
标签: java lazy-evaluation concurrent-programming