1.SingleObject.java
package myTest;
public class SingleObject {
//1.声明一个唯一的静态自身实例,
//注意这是private 只供内部调用,成员变量为不创建对象就能被外部使用,所以用static修饰,共享的
private static SingleObject instance;
/**
* 2. 私有化构造函数使得无法通过构造函数创建实例
*/
private SingleObject(){
}
/**
* 3、访问器:提供其他类访问私有化属性,静态方法static 共享的,外界直接通过 类名.方法名() 即可访问
* @return 返回本类的一个唯一实例,
*/
public static SingleObject getInstance(){
//加上这一层判断是为了性能,因为加锁会对程序的效率有影响,所以多一层判断避免无谓的消耗
if(instance == null){
//加上锁保证多线程下也能够保证唯一实例
synchronized(SingleObject.class){
if(instance == null){
//当实例为空时实例化一个实例
instance = new SingleObject();
}
}
}
return instance;
}
public void Singleton(){
System.out.println("以上是单例模式,而且是加同步锁,线性安全的!!!");
}
}
2.测试类 TestSingleton.java
package myTest;
public class TestSingleton {
public static void main(String[] args) {
SingleObject single =SingleObject.getInstance();
single.Singleton();
}
}
3.结果如下图