- ★★Java質問・相談スレッド173★★ [転載禁止]©2ch.net
672 :デフォルトの名無しさん[]:2015/05/29(金) 14:16:56.43 ID:AQuaH7cx - 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); } } }
|
|