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);
}
}
}