15/05/29 14:16:56.43 AQuaH7cx.net
synchronizeについて教えてください。下記のコードでメソッドにsynchronizedを行っていますが、
変数mapは排他がかかるでしょうか?それともメソッドにsynchronizedを行ってもダメで変数mapそのものにsynchronizedするべきでしょうか?
※前提条件
・getData()は外部のスレッドから一定周期で呼ばれる。
・setData()は内部のスレッド(SubThread)から一定周期で呼ばれる。
public class Common{
private HashMap<String,String> map = new HashMap<String,String>();
public static void main(String args[]){
SubThread sub = new SubThread();
}
public synchronized HashMap<String,String> getData() {
return map;
}
private synchronized void setData(String data1, String data2) {
map.put(data1,data2);
}
private class SubThread extends Thread{
String strData1 = "Data1";
String strData2 = "Data2";
public void run(){
setData(strData1,strData2);
}
}
}