2016-05-28 6 views
1
public class ThreadString extends Thread { 
    String str = "ABC"; 

    public void run() { 
     str = "abc"; 
    } 
} 

スレッドが上記の実行方法にアクセスしている場合は、 "ABC"への参照が "abc"をどのようにして内部的に動作するかを指していますか?どのようにStringクラスはJavaでスレッドセーフですか?

+2

'String'は不変です。あなたがしているのは、参照を変更することだけです。 –

+0

このクラスはスレッドセーフではありません。 –

+2

さて、タイトルはあなたのテキストとは違うものを求めています。タイトルの質問に対する回答を取得する場合は、[this](http://stackoverflow.com/questions/9303532/immutable-objects-are-thread-safe-but-why)または[that]( http://stackoverflow.com/questions/25224033/does-immutability-guarantee-thread-safety)。 – Tom

答えて

4

StringのJavaでは不変です。 Stringを変更していない場合は、別の値を指しているだけです。その点から、スレッドセーフです - str"ABC"または​​のいずれかですが、それは何か無効または違法ではありません。

+2

'str'は何でも設定できます:フィールドはプライベートではありません。 –

関連する問題