gpt4 book ai didi

java - 由于不变性,字符串线程安全?

转载 作者:行者123 更新时间:2023-12-04 18:06:42 25 4
gpt4 key购买 nike

你好,我在读到一个字符串是线程安全的,因为它是不可变的。

例如我这样做:

String a = "test";

一个线程使用这个变量。但是另一个线程仍然可以使用这个变量并改变它:

a = a + "something";

所以会不会变?

如果它是易变的,我会明白,它一次只能由一个线程使用。但是不变性并不能保证我做到这一点!?

最佳答案

您不是在更改 a 指向的对象,而是在 a 指向的位置:

String a = "test";

这里a指向一个字符串"test"

a = a + "something";

此处创建了一个新字符串,作为 "test""something" 连接的结果,其中 "testsomething" 其中a指向。这是一个不同的例子。

所以不存在线程安全问题,因为两个线程都有自己的 a 引用相同的 "test" 字符串对象,但是一旦其中一个线程将修改字符串以引用 "testsomething" 对象,另一个线程仍将引用原始的 "test" 对象。

关于java - 由于不变性,字符串线程安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17255771/

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