package com.figo.study.test.designpattern;
import java.util.concurrent.atomic.AtomicInteger;
/**
* 单例模式
* 在线人数统计
*/
public class SessionCount {
private AtomicInteger count=new AtomicInteger(0);
//防止创建多个实例,将构造函数设置为private
private SessionCount() {
}
//饿汉模式,一开始就new出来
// private static SessionCount instance=new SessionCount();
// public static SessionCount getInstance(){
// return instance;
// }
//懒汉模式
private static SessionCount instance;
public static SessionCount getInstance(){
if(instance==null) {
//避免多线程时,创建出多个实例
synchronized (instance){
//再次判断,避免已经被创建出来
if(instance==null){
instance=new SessionCount();
}
}
}
return instance;
}
//人数加1
public int plus(){
return count.incrementAndGet();
}
//人数减1
public int decrease(){
return count.decrementAndGet();
}
//当前在线人数
public void showPersonOnlineMsg() {
System.out.println("当前人数:"+this.count.get());
}
}
设计模式(三):单例模式(创建型模式)
于 2023-07-02 20:36:57 首次发布