这次说的小功能呢,其实是跟项目中用到的知识有关,虽然对别人可能会起不到什么作用,但博客是我记录知识的好地方,所以便总结在此
目标功能:准备好N个账户,名字的命名形式为:用户名+编号,每次登陆使用一个不同用户,当然这个账户不能重复,
程序实现原理:首先呢准备好一个List将用户个数的集合放入进去:这个LIST支持的得是Long类型而不是int,为什么这么做呢,因为后面要用到System.currentTimeMillis();然后呢遍历找出list集合中最小的数字,将索引记住,设置list集合中这个索引的值为System.currentTimeMillis();这样的话list集合中的数字就有个最大的了,一次类推以后每遍历出来一个最小的就给他赋值为System.currentTimeMillis();,这样这N个用户总会轮流的来使用
好了,说的可能不是太清晰,看看代码就OK了,直接运行看不出效果得在服务器上跑出来
user.properties
user.prefixname=user
user.count=20
处理程序
package com.cn.util.common;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
public class PropertiesRead {
public static InputStream inStream = Thread.currentThread()
.getContextClassLoader().getResourceAsStream("user.properties");
public static Properties properties = new Properties();
public static List<Long> caches=new ArrayList<Long>();
public static String accname;
public static int count;
static {
try {
properties.load(inStream);
accname = (String) properties.get("user.prefixname");
count = Integer.valueOf(properties.getProperty("user.count"));
for (int i = 1; i <= count; i++) {
caches.add(Long.valueOf(i));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
raedProperties();
// int random=(int)(Math.random()*10)+1;
// System.out.println(random);
// System.out.println(System.currentTimeMillis());
}
public static String raedProperties() {
int size=caches==null?0:caches.size();
Long flag=Long.MAX_VALUE;
int index=0;
for(int i=0;i<size;i++){
if(flag>caches.get(i)){
flag=caches.get(i);
index=i;
}
}
caches.set(index, System.currentTimeMillis());
System.out.println(index+"==="+flag+"==="+caches.get(index));
String loginName=accname+(index+1);
System.out.println(caches);
System.out.println("登录名称"+loginName);
return loginName;
}
}
本文介绍了一种基于Java实现的用户轮询登录机制,通过维护一个包含用户索引的List集合,并利用当前时间戳更新已使用的用户索引来避免重复登录,确保每个用户按顺序被调用。
386

被折叠的 条评论
为什么被折叠?



