kra*_*moe 2 java string immutability
您正在阅读一个字符串是线程安全的,因为它是不可变的.
例如我做:
String a = "test";
Run Code Online (Sandbox Code Playgroud)
一个线程使用此变量.但另一个线程仍然可以使用此变量并更改它:
a = a + "something";
Run Code Online (Sandbox Code Playgroud)
所以它会改变与否?
如果它是易失性的,我会得到它,它一次只能被一个线程使用.但不可靠性并不能保证我这个!?
您没有更改指向的对象a,但a指向的位置:
String a = "test";
Run Code Online (Sandbox Code Playgroud)
这里a指向一个字符串"test"
a = a + "something";
Run Code Online (Sandbox Code Playgroud)
这里一个新的字符串作为串接的结果产生"test"和"something",这"testsomething"其中一个点.这是一个不同的例子.
所以没有线程安全的问题,因为两个线程都有自己a引用相同的"test"字符串对象,但是一旦其中一个线程将修改字符串引用该"testsomething"对象,另一个线程仍将引用原始"test"对象.