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

Python018

java 怎么实现限制用户在线人数,求实例,第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,其锁的对象是该方法的类对象。

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

用session超时的特点来实现

1.用户登录,session生成 用户在线

2.用户机器断电。一定时间(这个怎么设置我就不讲了,地球人应该都知道)后session超时 通过session监听器实现 用户下线

3.用户退出 用户下线

我没真正实现过,不过我的思路是这样的:

数据库用户表有字段用户名,密码,是否登录(username,password,Islogin)

默认Islogin为false,当一用户登录成功,更新Islogin字段的值为true.当统计用户在线人数,只需要用select count(*) from 用户表 where Islogin='true'即可得到在线人数。

不知道是不是正确,我也在学习当中。