对于许久不用的东西,容易忘记。百度许久,也未能找到自己所要。 从今日起,有些东西就记载下来,不仅方便自己,希望能帮到他人吧!
单,故名思议就是一的意思。我虽然很差,但我是世界唯一的,当然每个人都是唯一的。
但是每new Object();就会创建一个实例。就会有很多个我,我只想说,我就是我。
代码表示:
public class Me{
//1.私有构造函数。
private Me() {
}
//2.实例化对象
private static Me mMe = new Me();
//3.暴露方法
public static Me newInstance() {
return mMe;
}
}
这样单例模式就完成了,每次拿到的对象都是相同的,正常情况不可能出现俩个我。但是当俩个线程都在执行的时候,尽管几率很小,出现多个我的情况,还是存在。那怎么办呢?
public class Me {
private static Me mMe = null;
private Me() {
}
public static Me newInstance() {
if (mMe == null) {
synchronized (Me.class) {
if (mMe == null) {
mMe = new Me();
}
}
}
return mMe;
}
锁,对就是同步锁,当线程A在调用的时候,就是锁住该方法,线程B处于等待中,就像排队一样。单例模式的表现还有很多种,每种都有优缺点,有兴趣的同学,可以去了解一下。