看板 java 關於我們 聯絡資訊
http://java.sun.com/docs/books/tutorial/essential/concurrency/locksync.html 中間有一個範例 public class MsLunch { private long c1 = 0; private long c2 = 0; private Object lock1 = new Object(); private Object lock2 = new Object(); public void inc1() { synchronized(lock1) { c1++; } } public void inc2() { synchronized(lock2) { c2++; } } } 如果我的class是 public class MyClass { private HashMap <Key,Obj> map = new HashMap<Key, Obj>(); public Obj getObj(Key key) { // 絕對不會return null synchronized(?) { // 想只對相同 key 作sync if (!this.map.containsKey(key)) { Obj obj = generateObj(); // generateObj 會很花時間, 只想作一次 this.map.set(key, obj); } } return this.map.get(key); } } 我該怎樣 synchroized (?), 除了使用 synchronized(this). 以上的技巧有幫助嗎, 或是有更聰明的方法? 感謝! ※ 編輯: easy1 來自: 79.210.98.27 (09/28 20:46)