1,懒汉式:
public class Singleton{
private static Singleton singleton = null;
public static synchronized synchronized getInstance(){
if(singleton==null){ 1
singleton = new Singleton(); 2
}
return singleton;
}
} 2, 毕老师的原话:多个线程都获取cpu的执行权。cpu执行到谁,谁就运行。明确一点,在某一个时刻,只能有一个程序在运行。(多核除外)
cpu在做着快速的切换,以达到看上去是同时运行的效果。我们可以形象把多线程的运行行为在互相抢夺cpu的执行权。这就是多线程的一
个特性:随机性。谁抢到谁执行,至于执行多长,cpu说的算。
3,假设一个线程运行到 “1“那行代码它的执行权没了,这是又进来另一个线程,执行到”2“行代码处,此时它也没有执行权了,注意此时已经new
了一个实例,那么该第一个线程运行了,它接着运行”2“行代码,此时就有了两个实例,它就不能保证是单例了。
|