这篇文章主要介绍了java如何统计当前在线数,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
java统计当前在线数
package com.hnedu.stat;
import Java.util.List;
import java.util.ArrayList;
import javax.servlet.http.HttpSession;
public class OnlineCounter {
private static List list = new ArrayList();
private OnlineCounter() {
}
public static void addUser(Object object) {
//得到用户当前访问时间
String nowtime = com.hnedu.util.StringUtils.getTime("mm:ss");
//Str数组用来存放用户得ip和访问时间
String[] str = new String[2];
str[0] = object.toString();
str[1] = nowtime;
//temp数组用来临时存放从list里面取出的用户ip和访问时间
String[] temp = new String[2];
//循环list
for (int i = 0; i < list.size(); i++) {
temp = (String[])list.get(i);
//如果从list里面取出的用户ip和str里面存放的ip相同,则更新访问时间
if(temp[0].equals(str[0])) {
list.set(i,str);
return;
}
//如果用户超过5分钟没有访问,则认为不在线
if(subTime(nowtime,temp[1]) > 300) {
list.remove(i);
}
}
//添加一个新的在线用户
list.add(str);
//释放资源
str = null;temp = null;
}
public static int getOnlineCount() {
//返回当前在线人数
return list.size();
}
public static List getOnline() {
return list;
}
private static int subTime(String src,String des) {
int n = 0;
java.util.Calendar ca = java.util.Calendar.getInstance();
long time1 =
com.hnedu.util.StringUtils.compareStringTime(src,des,"mm:ss");
ca.setTimeInMillis(time1);
n = (ca.get(java.util.Calendar.MINUTE)) * 60;
n = n + ca.get(java.util.Calendar.SECOND);
return n;
}
}
引用的StringUtils里面的两个方法:
public static String getTime(String parrten)
{
String timestr;
if(parrten==null||parrten.equals(""))
{
parrten="yyyyMMddHHmmss";
}
java.text.SimpleDateFormat sdf=new SimpleDateFormat(parrten);
java.util.Date cday=new Date();
timestr=sdf.format(cday);
return timestr;
}
public static long compareStringTime(String t1,String t2,String parrten)
{
SimpleDateFormat formatter = new SimpleDateFormat (parrten);
ParsePosition pos = new ParsePosition(0);
ParsePosition pos1 = new ParsePosition(0);
Date dt1=formatter.parse(t1,pos);
Date dt2=formatter.parse(t2,pos1);
long l=dt1.getTime()-dt2.getTime();
return l;
}
感谢你能够认真阅读完这篇文章,希望小编分享的“java如何统计当前在线数”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!