私は、Javaメソッドの同期とオブジェクトのロックに関係することに興味があります。
同期されたメソッドを呼び出すと、私が理解していることから、メソッド呼び出しの間、オブジェクト全体がロックされます。
これは、オブジェクトにデータを書き込むメソッドのみを同期する必要があり、オブジェクトからデータを読み取る必要がないことを意味しますか?
public class testclass {
private ArrayList<String> data;
public ArrayList<String> getData() {
return data;
}
public synchronized void setData(ArrayList<String> data) {
this.data = data;
}
}
基本的に、上記のコードはスレッドセーフですか(setDataメソッドの実行中にtestclassオブジェクトがロックされるため)?または、getDataメソッドも同期する必要がありますか?