考虑:制造类线程安全
public class TestSeven extends Thread {
private static int x;
public synchronized void doThings() {
int current = x;
current++;
x = current;
}
public void run() {
doThings();
}
}
哪种说法是正确的? A.编译失败。
B.运行时抛出异常。 C.同步run()方法会使类是线程安全的。
D.变量“x”中的数据不受并发访问问题的影响。
E.声明的doThings()方法为静态会使类线程安全的。
F.结束语中doThings()中的同步(新的对象()){}块中的语句将使类线程安全的。
是不是足够的,为了使这个类线程安全的同步标记doThings()?我看到正确的答案是D,但这个问题的模型答案是E,但我不明白为什么?
D不正确。 – Keppil
E是正确的,因为它不会说“删除同步关键字”。不必要的棘手措施,但这就是你在这些考试中得到的。 – Thilo
D是正确的,因为使用给定的类没有其他方法来改变x的值。 如果允许添加其他方法,那么我会说甚至解决方案E是不正确的。 –