一、使用静态方法,把对象定义成private
public class Manager1 {
//构造方法私有
private Manager1(){
}
private static final Manager1 INSTANCE = new Manager1();
public void m(){
//代码逻辑
}
public static Manager1 getInstance(){
return INSTANCE;
}
}
二、使用枚举类
public enum Manager2 {
INSTANCE;
public void m(){
//代码逻辑
}
}
三、多线程测试
public class SingletonDemo {
public static void main(String[] args) {
Manager1.getInstance().m();//逻辑代码调用 Manager2.INSTANCE.m(); //逻辑代码调用
for(int i=0;i<100;i++){
try {
Thread.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
new Thread(()->{
System.out.println(Manager1.getInstance().hashCode());
}).start();
}
for (int i=0;i<100;i++){
new Thread(()->{
System.out.println(Manager2.INSTANCE.hashCode());
}).start();
}
}
}