类似11平台的组队召集,但不要求在线,希望对大家有用的
思路:
1、队列保存活动10000大小,成员里面有当前人数,总人数
2、所有活动入库,队列中没有的数据,尝试从数据库中获取,获取到了则加入队列
3、队列满,先入先出原则,将第一个从队列中删除入库
4、队列中参加的人数变化不入库
5、活动id由服务器自动生成,生成规则:用户id+系统当前时间,避免重复
活动类:
队列:
private List list = new ArrayList();
Map<String,Activity> map = new HashMap<String,Activity>();
private Object lock = new Object();
public int count = 0;
public void putReceiverItem(Activity item)
{
synchronized (lock)
{
//最大保存10w的消息
if (count > 100000)
{
count--;
list.remove(0);
}
count++;
list.add(item.getId());
map.put(item.getId(), item);
lock.notify();
}
}
public Activity getReceiverItem(String activityId)
{
synchronized (lock)
{
return map.get(activityId);
}
}
处理类:
数据库操作类: