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