在做项目的时候有这个需求:用户提交请求需要排队处理(先来先处理,后来请求处于等待状态),用户可以查看所有请求状态。
序号 |
用户名 |
提交类型 |
提交时间 |
开始处理时间 |
处理结束时间 |
处理状态 |
4 |
张三 |
aaaa |
2011-11-16 17:14:34 |
|
|
waiting |
3 |
李四 |
sss |
2011-11-16 17:14:09 |
2011-11-16 17:14:09 |
|
process |
2 |
王五 |
dddd |
2011-11-16 17:13:47 |
2011-11-16 17:13:47 |
2011-11-16 17:13:57 |
failed |
1 |
赵六 |
ffff |
2011-11-16 17:13:34 |
011-11-16 17:13:34 |
2011-11-16 17:13:44 |
success |
pm设计的方案是:用两个对列解决。一个队列处理所有请求的状态,将状态置为waiting。第二个队列处理请求。这样就可以在列表中展示所有请求状态,又可以处理请求。
我对此不懂,现在权当一个处理方法记录下来。至于此方法是否ok,我就不敢保证。只当一个解决方法积累。
<!--EndFragment-->
Object object = null;
// object在这里设置了下其他状态
// 这个队列存放等待的所有对象
MyQueueTwo bMyQueueTwo = MyQueueTwo.getInstance();
bMyQueueTwo.queueTwo.offer(object);
// 将userData对象放入queue中(队列中)
MyQueue aMyQueue = MyQueue.getInstance();
aMyQueue.queue.offer(object);
// 对象
Object str = null;
Object strTwo = null;
// 第一个队列————设置所有请求状态
while ((strTwo = bMyQueueTwo.queueTwo.poll()) != null) {
// 语句块
}
// 从队列中一个一个取出来(先进先出),处理请求
synchronized (aMyQueue) {
while ((str = aMyQueue.queue.peek()) != null) {
// 处理异常,有异常时需要将队头的对象释放掉,才会处理下一个请求
try {
// 语句块
} catch (Exception e2) {
aMyQueue.queue.poll();
e2.printStackTrace();
continue;
}
// for循环中释放对象
for (int i = 0; i < strPatchFilePathaArray.length; i++) {
try {
} catch (Exception e) {
aMyQueue.queue.poll();
e.printStackTrace();
break;
}
}
}
}
public class MyQueue {
public static Queue<Object> queue = null;
private static MyQueue instance = null;
private MyQueue() {
queue = new LinkedList<Object>();
}
public static synchronized MyQueue getInstance() {
if (instance == null) {
instance = new MyQueue();
}
return instance;
}
}
分享到:
相关推荐
基于springboot+mybatis redis构建的在线抽奖系统,管理后台,采用队列处理,支持高并发 项目经过严格测试,确保可以运行! 基于springboot+mybatis redis构建的在线抽奖系统,管理后台,采用队列处理,支持高并发...
易语言源码易语言简单队列处理源码.rar 易语言源码易语言简单队列处理源码.rar 易语言源码易语言简单队列处理源码.rar 易语言源码易语言简单队列处理源码.rar 易语言源码易语言简单队列处理源码.rar 易语言源码...
易语言消息队列处理我自己也在用的一款比较好用也不卡死
抽奖系统后台 springboot+mybatis redis队列处理高并发
PHP中利用redis实现消息队列处理高并发请求思路详解.rar
易语言简单队列处理源码,简单队列处理,初始化启动,AddrPacketQrList,DelsPacketQrList,ProcessorPacketQ,提交处理事件,设置定时器,销毁定时器,取变量地址_字节集,ASM_写整数,ASM_写短整数,ASM_读短整数,ASM_写字节,...
c linux 队列处理 类似c# arraylist
消息队列处理,非常有用。
q4m mysql队列处理 (文本打开即可)
内容是一个javaspring结构的模块,设计了处理高并发解决方案,消息队列处理业务逻辑的代码设计,注意:1 只是一个模块,不是一个可运行项目,2 需要项目结构是java spring,3 需要自己选择并搭建所使用的消息队列。
行业分类-设备装置-呼叫队列处理.zip
这是一个可以扩展的队列处理程序,没有使用框架。我们的项目使用Yii的框架,所有这里的测试示例就按照Yii的方式来编写的。
java抽奖系统后台 springboot+mybatis redis队列处理高并发.zip
Socket 客户端代码封装、服务端代码封装,让使用Socket更简单。 同时服务端支持超过客户端连接(测试超过1万个同时连接稳定运行),Tasks多线程 队列处理 大数据拆分包处理
行业分类-设备装置-消息队列的实现方法和系统、消息队列处理系统
主要介绍了asp.net通过消息队列处理高并发请求(以抢小米手机为例),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
抽奖系统后台 springboot+mybatis redis队列处理高并发