懒汉式单列行模式----多线程

        这里有安全问题,当多个线程进来之后,在执行判断和创建对象之间可能出现cpu在线程之间的切换,一旦cpu切换了线程,就会导致每个线程都创建一个当前单例类的对象,这样就会导致当前的单例类不再保证对象唯一了。通过同步来解决这个问题。
class Single {
    private Single() {

    }

    private static Single s = null;

    public static Single get() {
        if (s == null) {      //提高效率,不让线程每次都运行同步。
            synchronized (Demo1.class) {
                if (s == null) {
                    s=new Single();
                }
            }
        }
        return s;
    }

}

class Show implements Runnable {
    public void run() {
        Single s = Single.get();
        System.out.println(s);
    }
}

class Demo1 {
    public static void main(String[] args) {
        Show s = new Show();
        Thread t = new Thread(s);
        Thread t2 = new Thread(s);
        t.start();
        t2.start();
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容