piecemessagedeliver.java
来自「一个网络对弈的中国象棋程序 操作: 1、Setting,选择对战方式。如果」· Java 代码 · 共 56 行
JAVA
56 行
package org.acerge.message.impl;
import java.util.ArrayList;
import java.util.List;
import org.acerge.message.Consumer;
import org.acerge.message.Message;
import org.acerge.message.MessageDeliver;
import org.acerge.message.MessageQueue;
import org.acerge.message.support.ObjectCopyer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class PieceMessageDeliver extends Thread implements MessageDeliver{
private static Log log=LogFactory.getLog(PieceMessageDeliver.class);
private MessageQueue msgQueue=null;
private List consumers=new ArrayList();
public PieceMessageDeliver(MessageQueue msgQueue){
this.msgQueue=msgQueue;
}
public void registerAConsumer(Consumer consumer) {
consumers.add(consumer);
}
public void removeAConsumer(Consumer consumer) {
consumers.remove(consumer);
}
public void deliveryAMessage(Message msg) {
//copyer.SetMessage(msg);
for(int i=0;i<consumers.size();i++){
Message newMsg=(Message)ObjectCopyer.getACopy(msg);
((Consumer)consumers.get(i)).consumeMessage(newMsg);
}
}
public void run(){
while(true){
Message m=null;
synchronized(msgQueue){
if(msgQueue.isEmpty())
try {
//msgQueue.notifyAll();
msgQueue.wait();
log.info("all message delivered!");
} catch (InterruptedException e) {
e.printStackTrace();
}
m=msgQueue.getAMessage();
msgQueue.notifyAll();
}
deliveryAMessage(m);
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?