gpt4 book ai didi

Java Thread ,答案是A怎么来的?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:31:31 24 4
gpt4 key购买 nike

问题来自http://www.javacertifications.net/javacert/scjp1.6Mock.jsp

第-20题

以下代码的输出是什么?

public class Test extends Thread
{
static String sName = "good";
public static void main(String argv[])
{
Test t = new Test();
t.nameTest(sName);
System.out.println(sName);
}
public void nameTest(String sName)
{
sName = sName + " idea ";
start();
}
public void run()
{
for(int i=0;i < 4; i++)
{
sName = sName + " " + i;

}
}
}

选项 一个好的 B)好主意 C)好主意好主意 正确答案是:A

说明:在 String 的情况下,局部方法中的更改值不会在全局方法中更改(因为 String 对象是不可变的)。

最佳答案

没有一个答案是正确的,也没有唯一正确的答案。

这个问题非常糟糕,因为它混合了两个完全不同的问题:

  • nameTest()方法的sName参数隐藏了同名的静态变量,对局部变量的修改没有效果。
  • nameTest() 启动一个线程,该线程更改其 run() 方法中的静态变量,main() 方法打印变量而不等待该线程完成。这被称为竞争条件:打印变量的哪个状态几乎是巧合——以下任何一种情况都是可能的:
    • 好 0
    • 好 0 1
    • 好 0 1 2
    • 好 0 1 2 3

关于Java Thread ,答案是A怎么来的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3811264/

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