hkdennis2k
   
發文: 1926
積分: 6
|
於 2007-09-30 10:07
     
這樣的話, 的確是很麻煩.....
大既要這樣寫吧?
ConcurrentHashMap map;
method1(key){ Object lock=new Object[]{ new Object(), new Object(), new Object() }; Object lock2=map.putIfAbsent(key,lock); if(lock2!=null) lock=lock2; synchronized(lock[1]){ synchronized(lock[2]){ /////// logic here } } }
method2(key){ 略.......... synchronized(lock2[0]){ synchronized(lock2[2]){ 略.......... }
method3(key){ 略.......... synchronized(lock2[0]){ synchronized(lock2[1]){ 略.......... }
沒試過, 不過最簡單的方法大約是這樣吧!? 而且就是可見的 memory leak (沒有在 map remove 任何 key)
不過如果要求不太高的話, 可放棄 cast1 會比較簡單一點
 
1. Programming is not coding
2. Learning Java is not leaning Java syntax
3. Study, not wait for be taught
4. Answer to yourself, not ask somebody else
5. Code is poetry
--- 6. 我跑去寫 C# 了....
--- 7. 回到 Java, PHP 還有 servers farm --- 8. 很久沒有寫 Java 了, 倒
|