スレッドのセキュリティ
スレッドセキュリティの重要な考え方は,マルチスレッドが同時に問題を起こさないことである.
マルチスレッドが同時に発生する問題は、臨界リソース、すなわち状態のある共通リソースである.これらの共通リソースへのアクセスがスレッド反発である場合、スレッドは安全であり、そうでない場合、スレッドは安全ではありません.
例:
tempはクラスAのインスタンスのステータスのあるパブリックリソースではありませんが、どのような場合ですか?複数のスレッドが1つのクラスAのインスタンスにアクセスする場合、すべてのクラスA内のtempへのアクセス方法はsynchronizedである必要があります.
逆に、各スレッドにクラスAのインスタンスがある場合、tempは共通リソースではありません.
スレッドセキュリティに関する比較的包括的な説明はjavaネットワークプログラミング第3版、138ページを参照してください.
マルチスレッドが同時に発生する問題は、臨界リソース、すなわち状態のある共通リソースである.これらの共通リソースへのアクセスがスレッド反発である場合、スレッドは安全であり、そうでない場合、スレッドは安全ではありません.
例:
Class A{
int temp;
public void setTemp(int i){
temp =i;
}
public int getTemp(){
return temp;
}
tempはクラスAのインスタンスのステータスのあるパブリックリソースではありませんが、どのような場合ですか?複数のスレッドが1つのクラスAのインスタンスにアクセスする場合、すべてのクラスA内のtempへのアクセス方法はsynchronizedである必要があります.
逆に、各スレッドにクラスAのインスタンスがある場合、tempは共通リソースではありません.
スレッドセキュリティに関する比較的包括的な説明はjavaネットワークプログラミング第3版、138ページを参照してください.