// @topic S-0314-10-01-20 Java singleton design pattern
// @brief class Singleton

package singleton;

public class Singleton {
    
    private static Mutex mMutex = new Mutex();
    private static Singleton mInstance = null;
    public int dummy;

    private Singleton( int dummy )
    {
        this.dummy = dummy;
    }
    
    //synchronized
    public static Singleton GetInstance()
    {
        Lock lock = new Lock( mMutex ); // automatically locks

        System.out.println( "Get Inst" );
        if ( mInstance == null ) {
            mInstance = new Singleton( 1 );
        }
        lock.release(); // don't forget to unlock

        return mInstance;
    }
}//class Singleton