java 怎么实现限制用户在线人数,求实例

2025-03-25 04:41:45
推荐回答(1个)
回答1:

锁加单例:

public class Regist{
    private static Regist rgst=new Regist();
    private Regist(){}
    private int cnt=0;
    private int max=100;
    public static getRegist(){return rgst;}
    ///设置最大上线人数
    public void setMax(int max){this.max=max;}
    ///判断新用户能否登入
    public synchronized boolean login(){
       if(cnt>=max)return false;
       ++cnt;
       return true;
    }
    ///用户退出时调用
    public synchronized void logout(){
        --cnt;
    }
};

有新用户要登入时,先Regist::getRegist().login()判断能否登入,返回true则表示没到用户上限,可以登入,否则表示到上限了,不能登入,用户退出时需要调用Regist::getRegist().logout()

synchronized不清楚可以百度,是种类似锁的东西。作用于方法上,相当于调用方法前先lock,调用之后unlock,其锁的对象是该方法的类对象。

线程不是太多可以用这个方法,线程太多用这个可能慢了些,好像加锁比较耗时间,如果同一个时间太多人进行登入操作,都得在那等着,一个一个进行,反应慢