public static synchronized HistorySqilte getHelper( Context context )
{
if ( mOpenHelper == null )
mOpenHelper = new HistorySqilte( context );
return(mOpenHelper);
}
每次需要SQLiteOpenHelper物件時,只需要呼叫該靜態方法就行了,加上方法同步,可以保證在整個應用中只會有這麼一個實例化物件。
在這裡順便提一下java的執行序同步,java的執行序同步是用的關鍵字是synchronized,synchronized可以用來修飾一個方法,如果是synchronized method(){}, 那麼某一個類別的某一個實例化物件就不可以同時訪問這個類別中所有的這個方法,只有獲得這物件的鎖之後才能呼叫這樣的方法,當然如果一個類別new出了幾個物件,那麼這些不同物件同時訪問同一個方法是可以的。
如果是synchronized static method(){}, 這種靜態同步方法,那麼這個類別所產生的任何物件都不可能同時訪問這個類別的靜態同步方法。
synchronized 關鍵字還能修飾方法中的某一塊區域,synchronized(object){/*區域塊*/},這裡的object就相當於一把鎖,一個類別中,同時指定這把鎖的同步方法不能同時被同一個物件訪問。
沒有留言 :
張貼留言