# re: singleton的一點(diǎn)疑問 回復(fù) 更多評論
2006-11-29 18:19 by
第一種形式也不會生成多個實(shí)例的,每次都是返回的類初始化時構(gòu)造的對象
第二種形式由于在調(diào)用方法時才生成實(shí)例并返回,考慮到可能多線程同時訪問這個方法時,可能生成多個實(shí)例的情況,必須加synchronized關(guān)鍵字讓方法變?yōu)橥?這樣同一時間只能一個線程執(zhí)行這個方法.
# re: singleton的一點(diǎn)疑問 回復(fù) 更多評論
2006-11-29 21:56 by
哦!線程安全!懂了,那相比而言,第一種形式是比較安全的。
那第二種形式并不比第一種形式效率高啊,怎么說是提高了效率呢?
# re: singleton的一點(diǎn)疑問 回復(fù) 更多評論
2006-11-30 02:59 by
個人感覺對一般的程序普通的這兩種寫法都是可以的
至于效率,應(yīng)該是第一種高些,因為沒有同步,不過也可能會有問題
這有一篇文章,超詳細(xì)的米仔細(xì)看- -,你感興趣去研究吧
http://m.tkk7.com/dreamstone/archive/2006/11/04/79026.aspx
# re: singleton的一點(diǎn)疑問 回復(fù) 更多評論
2006-11-30 09:24 by
謝了,太復(fù)雜了,字節(jié)碼分析!
以后就用第一種形式了!
# re: singleton的一點(diǎn)疑問 回復(fù) 更多評論
2006-11-30 18:42 by
我覺得是因為第一種方式會在類加載的時候就初始化instance,而第二種會在使用時初始化,中間有一段時間不用吧~~
# re: singleton的一點(diǎn)疑問 回復(fù) 更多評論
2006-11-30 19:58 by
不對吧,這兩個單態(tài)類只能通過Singleton.getInstance()來創(chuàng)建對象,所以應(yīng)該都是調(diào)用時才初始化,不存在你所說的情況!
# re: singleton的一點(diǎn)疑問 回復(fù) 更多評論
2006-12-10 05:07 by
第一種是類加載時生成實(shí)例,第二種是調(diào)用方法時生成實(shí)例,生成實(shí)例也要占用內(nèi)存影響效率,在需要的時候再生成實(shí)例,感覺第二種更有效率。