gpt4 book ai didi

Java 类线程安全方法,用于考试认证 1Z0-851

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:12:46 27 4
gpt4 key购买 nike

我正在学习 1Z0-851 Oracla Java SE 1.6 认证,我看到了这个问题:

question 4

谁能解释一下这个答案?

然后说说我这样想是否正确:如果 doThings() 是静态的,尽管方法不是 static,但每个 TestSeven 对象都会访问 doThings,但按时间只能进行一次访问同时不一致地修改x值。

我这样想对吗?

谢谢。

最佳答案

是的,就是这样。目前,如果您创建 TestSeven 的两个实例并从 2 个不同的线程调用它们的 doThings 方法,您无法保证 x 会是增加了两倍。比如下面的执行是合法的(T1和T2是两个线程):

T1: current = x //0
T2: current = x //0
T1: current++; // 1
T2: current++; // 1
T1: x = current; // 1
T2: x = current; // 1

因此您调用了该方法两次,但 x 只增加了一次。

如果您将方法设为静态,则在给定时刻只有一个线程能够执行它,即使您创建了很多实例也是如此。

关于Java 类线程安全方法,用于考试认证 1Z0-851,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15073516/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com