1. 程式人生 > 其它 >當面試官問:‘如何獲取文件中任意一個元素與文件頂部的距離?’

當面試官問:‘如何獲取文件中任意一個元素與文件頂部的距離?’

1、餓漢模式

/**
 * @author joy
 * @Package gof23
 * @Description: 單例模式之餓漢式單例模式
 * @date 2022/3/11 10:23
 */
public class Hungry {
    private static Hungry hungry = new Hungry();
    //私有化構造器:單例模式的核心思想
    private Hungry() {
    }
    public static Hungry getInstance() {
        return hungry;
    }
}

2、懶漢模式

/**
 * @author joy
 * @Package gof23
 * @Description: 單例模式之懶漢式,執行緒不安全,可以改為雙重檢驗鎖模式
 * @date 2022/3/11 10:29
 */
public class LazyMan {
    private static LazyMan lazyMan;

    private LazyMan() {
    }

    public static LazyMan getInstance(){
        if(lazyMan == null){
            lazyMan = new LazyMan();
        }
        return lazyMan;
    }
}

3、雙重檢驗鎖模式

/**
 * @author joy
 * @Package gof23
 * @Description: 單例模式懶漢式的雙重檢驗鎖模式,執行緒安全
 * @date 2022/3/11 10:37
 */
public class LazyManSyn {
    private static volatile LazyManSyn lazyManSyn;//使用此關鍵字是為了防止指令重排
    private LazyManSyn(){

    }
    public static LazyManSyn getInstance(){
        if(lazyManSyn == null){
            synchronized(LazyManSyn.class){//synchronized程式碼塊是悲觀鎖
                if(lazyManSyn == null){
                    lazyManSyn = new LazyManSyn();
                }
            }
        }
        return lazyManSyn;
    }
}