多线程消息处理队列
来源:互联网 发布:gnn网络 编辑:程序博客网 时间:2024/05/18 02:56
JAVA入门
百度了大量资料后写了个简单消息处理队列
Node 是自己仿写的链表,参考LinkedList
至于为啥要仿写感觉学习阶段重复轮子肯定是必不可少的事情。。
package org.great.server.model;import org.great.common.model.Msg;import org.great.common.model.Node;/** * * @author Blless 利用线程阻塞写的消息处理队列 感觉写完这个事件监听也可以写了 * */public class MsgQueue extends Thread { private boolean Running; public Node<Msg> msgList; private static MsgQueue mq = null; private MsgQueue() {this.Running = true;this.msgList = new Node<Msg>();start(); } synchronized public static MsgQueue getInstance() {if (mq == null) { mq = new MsgQueue();}return mq; } @Override public void run() {while (Running) { if (msgList.isEmpty()) {// 链表是否为空synchronized (this) { try {// for debugSystem.out.println("Waitting...");// debug endthis.wait();// 空则阻塞线程 } catch (InterruptedException e) {e.printStackTrace(); }} } else {msgList.getFirst();Process();msgList.delFirst(); }} } public void close() {this.Running = false;interrupt(); } public void putMsg(Msg msg) {msgList.add(msg);synchronized (this) { // for debug System.out.println("Notify..."); // debug end notify();} } private void Process() {// for debugSystem.out.println("Running...");// debug end }}
测试
package org.great.server.model;import org.great.common.model.Msg;/** * * @author Blless 消息队列测试类 * */public class TestQueue { public static void main(String[] args) {MsgQueue mq = MsgQueue.getInstance();Msg msg =new Msg();while(true){ try {Thread.sleep(1000);mq.putMsg(msg); } catch (InterruptedException e) {// TODO 自动生成的 catch 块e.printStackTrace(); }} }}
0 0
- 多线程消息处理队列
- Android消息队列(三)--多线程与消息处理
- 多线程操作消息队列
- 消息队列 多线程 linux
- windows 多线程 消息队列
- windows 多线程 消息队列
- java多线程:消息队列
- Android消息队列处理消息
- 消息队列处理httpsqs
- 消息队列处理方式
- redis处理消息队列
- 消息队列处理模式
- AtiviMQ 消息队列处理
- 多线程消息队列 (MSMQ) 触发器
- 多线程消息队列 (MSMQ) 触发器
- java多线程消费消息队列
- C++多线程框架--------- 消息队列
- Python:多线程、消息队列编程
- Spring 之注解事务 @Transactional
- Hello World。
- Linux环境下开发过程中常用的shell命令
- 跟随大神的脚步学习之Handler:Handler详解
- 【整理】CAD常用快捷键
- 多线程消息处理队列
- Portal Server搭建(wifidog安装)
- LAMP+YII框架配置中遇到的问题
- 3788 ZOJ问题
- Delphi : 文件的拖放和打开,拖拽
- delphi 实现拖拽打开文件
- UVA 11478 Halum(差分约束系统+Bellman-Ford)
- markdown---两款实用的markdown编辑器(windows)
- 深入了解VMware虚拟网络