死循環的代碼在hashmap的transfer方法:
void transfer(final Entry[] newTable) {
final Entry[] src = table;
final int newCapacity = newTable.length;
final long time1 = System.currentTimeMillis();
for (int j = 0; j < src.length; j++) {
Entry<K,V> e = src[j];
if (e != null) {
src[j] = null;
do {
final Entry<K,V> next = e.next;
final int i = indexFor(e.hash, newCapacity);
e.next = newTable[i];
newTable[i] = e;
e = next;
} while (e != null);
}
}
}
我的分析是:死循環就在while中,對同一個舊table中的e,一個線程執行了 e.next = newTable[i];(還沒到 e = next;),另一個才到 final Entry<K,V> next = e.next;,結果后到的線程接著執行e = next;造成e=e.next,死循環了。
re: 搜索拼音輸入法研究[未登錄] kafka0102 2009-05-11 10:50
ding一個
re: 消除實現繼承和面向接口編程 kafka0102 2007-09-03 22:17
@Matthew Chen
是的,對于繁雜的對象模型,如果繼承層次太多就會很難把握具體的調用,也更難于修改。對于我舉的例子,也許并不漂亮,這里只是為了說明一下問題。實際上,我看到很多代碼有在基類拋出異常或子類拋出異常的情況,因為作者希望抽象出的公共操作只是對其某個或某幾個子類不適用,而作者因為實際需求又希望將方法作為公共方法。
re: 在spring中使用Timer kafka0102 2007-07-20 08:55
不好意思,記錯了,以為Spring也是opnesymphony 的東東了。。我對Quartz也不是很了解,它在做復雜的任務調度方面要更好些,因為它可以在配置文件中配置調度策略,而Timer則只能寫在TimerTask中。
re: 使用DbUnit進行持久化測試(1) kafka0102 2007-06-14 09:19
有誰知道如何在文章中附上文件?
re: 要范型,要DAO,更要范型DAO kafka0102 2007-05-03 22:06
發表文章時,代碼不是直接貼進去的,而是選擇編輯器中的“代碼”選項(應該在編輯菜單的最后一個位置),然后根據彈出來的對話框進行操作就行了。
re: 要范型,要DAO,更要范型DAO kafka0102 2007-04-17 09:20
都要瘋掉了。昨晚第一遍寫的時候,直接在編輯器里做,結果添加代碼框出不來,IE死掉了。第二遍在word里寫,結果發表時不能連接服務器。好吧,一大早來做,結果從word到編輯器轉換時,格式都亂了。就這樣了,沒心情再改了。
re: JavaScript中定義對象的四種方式 kafka0102 2007-04-09 19:11
學藝不精,還需努力!
re: JavaScript中定義對象的四種方式 kafka0102 2007-04-08 20:28
確實不對,我試了一下,name屬性根本沒有起作用,看來外部方法introduceSelf()需要添加參數name才行!
re: 一道java算法題 kafka0102 2007-03-13 16:03
我本身也不會多少算法題,我想的是,這樣的題要求的是實現技巧,而不單單是結果。這道題蠻可以for循環嵌套,將得到的每一個排列放到Set中讓Set過濾,但這樣效率極低,而且Set如果自己實現(比如TreeSet)也很復雜。做了這么多年Java,感覺就是基本的數據結構還行,算法方面就差很多(也許沒有使用機會吧),但算法是很基礎的東西,值得好好學習。
re: 動態代理的一些思考和疑問:(疑問還沒解決) kafka0102 2006-11-14 00:33
實際使用的代理對象應該通過Proxy.newProxyInstance這樣的方法實現,而代理對象調用的就是繼承了InvocationHandler的類的public Object invoke(Object proxy, Method method, Object[] args)方法,這里的Object proxy應該就是代理對象本身。如果你的method.invoke(this.delegate, args); 改成method.invoke(proxy, args);將出現不斷的循環。
re: 玩玩Spring之初章 kafka0102 2006-05-04 18:45
不過是個程序員,做程序不過混口飯吃,何必那么張狂?對這么一個框架有了些認識就牛啊?最看不上你這種人了。有時間多做做程序,多學學什么叫做謙虛。大音稀聲。盡管我是個80后的人,但我可以告訴你,80后根本配不上美國50年代的一代。垮掉的不單是這一代,是這一社會。