Re: [問題] 一個 singleton? 的問題
※ 引述《dream1124 (全新開始)》之銘言:
: ※ 引述《qweqweqweqwe (啪)》之銘言:
: : 各位板友好,最近遇到了一個跟 Singleton? 有關的問題想請教一下,
: : 程式碼是憑印象大略打的,所以有誤的話還請見諒 QQ
: : class Single {
: : private Single mInstance;
: : public static Single getInstance() {
: : if (mInstance == null) {
: : mInstance = new Single();
: : }
: : return mInstance;
: : }
: 靜態方法呼叫類別的非靜態成員? 程式編譯應該過不了
: : private Single(){}
: : public void reset() {
: : mInstance = null;
: : }
: : }
: reset 沒加 static 修飾詞,單例應該也沒辦法實現了吧....
謝謝提醒,由於半夜突然想到這個問題,所以漏了許多地方非常不好意思,
已經在前文補上該有的內容,
: NPE 是什麼意思? 我不太懂你是遇到什麼多執行緒問題
NPE是 nullpointer exception,抱歉沒有說明清楚 QQ 在公司常常用NPE當縮寫。
: 如果你是希望在有人 reset 之後呼叫 getInstance 的執行緒不會得到過時的物作
: 那你可以這樣寫
: public class SingletonTest {
: private static SingletonTest instance = null;
: public synchronized static SingletonTest getInstance(){
: if ( instance == null ){
: instance = new SingletonTest();
: return instance;
: }
: return instance;
: }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
不好意思,看到這段有個疑問,請問改寫成如下會有什麼不妥嗎?
--------------------------------------------------------
public synchronized static SingletonTest getInstance(){
if ( instance == null ){
instance = new SingletonTest();
}
return instance;
}
--------------------------------------------------------
: private SingletonTest(){
: }
: public synchronized static void reset(){
: instance = new SingletonTest();
: }
: }
: 不需要額外創造一個 SYNC 物件然後在它上面同步,
: 同歩在類別的方法上就可以了
另外看起來在 reset 別設成 null 取而代之的是重新 new Singleton 的方法
似乎可以解決 nullpointer exception 的問題,謝謝您的回應 QQ 小弟再思考思考。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 36.224.104.196
推
12/29 20:53, , 1F
12/29 20:53, 1F
推
12/29 20:56, , 2F
12/29 20:56, 2F
→
12/29 20:59, , 3F
12/29 20:59, 3F
→
12/29 21:14, , 4F
12/29 21:14, 4F
→
12/29 21:44, , 5F
12/29 21:44, 5F
推
12/29 22:25, , 6F
12/29 22:25, 6F
→
12/29 22:27, , 7F
12/29 22:27, 7F
→
12/29 22:56, , 8F
12/29 22:56, 8F
→
12/30 19:20, , 9F
12/30 19:20, 9F
推
01/02 10:44, , 10F
01/02 10:44, 10F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
java 近期熱門文章
PTT數位生活區 即時熱門文章