6.令牌环模拟

令牌环工作原理:
参考:[url]http://www.mypcera.com/SOFTXUE/4/juyuwan/jy077.htm[/url]

事件:1.信息到达队伍
2.token的到达:
判断token是否被占用,若没有,则取出信息,占用。
若被占用,则判断信息是不是送到自己的,若是,则取出信息,释放token。
3.token的离开:
确定到达的下一个站点。

信息到达队伍:

private void arriveMsg(Event e) {
this.currentTime=e.getTime();
int arriveStation=e.getMessage().getFrom();
msgQueue[arriveStation].getQueue().add(e.getMessage());
System.out.println("at"+this.currentTime+"有待发送信息达到"+arriveStation+"将发送到:"+e.getMessage().getTo());
}


token到达:

private void arriveToken(Event e) {
this.currentTime=e.getTime();
System.out.println("at"+this.currentTime+" 令牌环到达站点:"+this.currentStationNo);
if(this.token.isUsable()==true){
//没被占用

LinkedList<Message> msgqueue=msgQueue[this.currentStationNo].getQueue();
if(msgqueue.isEmpty()==false){
System.out.println("站点:"+this.currentStationNo+"占用令牌。");
token.setUsable(false);
token.setMessage(msgqueue.getFirst());
msgQueue[this.currentStationNo].getQueue().removeFirst();

Message msgnext=this.generateMessage(this.currentStationNo);
Event e1=new Event();
e1.setTime(this.currentTime+this.GenerateExpRandom(this.thetaMsgArr));
e1.setEventType(Event.MsgArrType);
e1.setMessage(msgnext);
eventList.add(e1);

}
}else{
//已经被占用
if(this.currentStationNo==token.getMessage().getTo()){
//信息道达目的地
this.transFrame++;
Message msg=token.getMessage();
System.out.println("设备接收到信息(信息到达目的地):"+msg.toString());
token.setUsable(true);
token.setMsgSendOut(true);
token.setMessage(null);
}
}

Event e1=new Event();
e1.setEventType(Event.TokenDepartType);
e1.setTime(this.currentTime+this.GenerateExpRandom(this.thetaTokenStay));
eventList.add(e1);
}



token的离开:

private void departToken(Event e) {
this.currentTime=e.getTime();
this.currentStationNo++;
if(this.currentStationNo>5){
this.currentStationNo=this.currentStationNo%5;
if(this.currentStationNo==0) this.currentStationNo=5;
}

this.arriveToken(e);

}



部分输出结果:
at0.005135103961531453有待发送信息达到1将发送到:5
at0.0429070724775125有待发送信息达到4将发送到:5
at0.13128697998194622有待发送信息达到2将发送到:4
at0.16231279045210434 令牌环到达站点:1
站点:1占用令牌。
at0.26342031760202356 令牌环到达站点:2
at0.3293651725265002 令牌环到达站点:3
at0.49684879829765793 令牌环到达站点:4
at0.5840702694268132有待发送信息达到1将发送到:2
at0.6264904931642324 令牌环到达站点:5
设备接收到信息(信息到达目的地):this is a message,send from station:[1]
at0.6485033679108476 令牌环到达站点:1
站点:1占用令牌。
at0.6555001675163846有待发送信息达到1将发送到:4
at0.6652051340887278有待发送信息达到5将发送到:1
at0.6856611262333839有待发送信息达到3将发送到:4
at0.9667025606654209 令牌环到达站点:2
设备接收到信息(信息到达目的地):this is a message,send from station:[1]
at1.0888152403328495 令牌环到达站点:3
站点:3占用令牌。
at1.093131530799538 令牌环到达站点:4
设备接收到信息(信息到达目的地):this is a message,send from station:[3]
at1.4893677625195276有待发送信息达到3将发送到:1
at1.6801766454598401 令牌环到达站点:5
站点:5占用令牌。
at1.72129015373906有待发送信息达到5将发送到:1
at1.8783366884347932 令牌环到达站点:1
设备接收到信息(信息到达目的地):this is a message,send from station:[5]
at1.9970509216938805 令牌环到达站点:2
站点:2占用令牌。
at2.0359228475328015有待发送信息达到2将发送到:5
at2.052906929079821 令牌环到达站点:3
at2.709537017904191 令牌环到达站点:4
设备接收到信息(信息到达目的地):this is a message,send from station:[2]
at2.9487409135817897 令牌环到达站点:5
站点:5占用令牌。
at3.1179208516479884有待发送信息达到5将发送到:4
at3.1365563349183088 令牌环到达站点:1
设备接收到信息(信息到达目的地):this is a message,send from station:[5]
at3.214315186139539 令牌环到达站点:2
站点:2占用令牌。
at3.2474062391442255 令牌环到达站点:3
at3.2813102889932932 令牌环到达站点:4
at3.288808301279126 令牌环到达站点:5
设备接收到信息(信息到达目的地):this is a message,send from station:[2]
at3.347817810516898有待发送信息达到2将发送到:5
at3.4387959388972957 令牌环到达站点:1
站点:1占用令牌。
at3.4534986992224557 令牌环到达站点:2
at3.5577489136564826有待发送信息达到1将发送到:2
at3.5748238223245736 令牌环到达站点:3
at3.657153043572079 令牌环到达站点:4
设备接收到信息(信息到达目的地):this is a message,send from station:[1]
at3.9176396833469953 令牌环到达站点:5
站点:5占用令牌。
at4.167308854644857有待发送信息达到5将发送到:2
at4.4763656019835985 令牌环到达站点:1
at4.489270012238441 令牌环到达站点:2
at4.96105985770283 令牌环到达站点:3
at4.979674950975465 令牌环到达站点:4
设备接收到信息(信息到达目的地):this is a message,send from station:[5]
at5.01287857963707 令牌环到达站点:5
站点:5占用令牌。
at5.079032717279464 令牌环到达站点:1
at5.103314337398866 令牌环到达站点:2
设备接收到信息(信息到达目的地):this is a message,send from station:[5]
at5.187647376475379 令牌环到达站点:3
站点:3占用令牌。
at5.224579742413381 令牌环到达站点:4
at5.493278550131993有待发送信息达到5将发送到:1
at5.895319143400959有待发送信息达到3将发送到:1
at5.907113359757197 令牌环到达站点:5
at6.01471932048277 令牌环到达站点:1
设备接收到信息(信息到达目的地):this is a message,send from station:[3]
at6.136239330462741 令牌环到达站点:2
站点:2占用令牌。
at6.244114524026342有待发送信息达到2将发送到:5
at6.501401142060667 令牌环到达站点:3
at6.686830883700003 令牌环到达站点:4
at6.8145931571425855 令牌环到达站点:5
设备接收到信息(信息到达目的地):this is a message,send from station:[2]
at6.860566170263548 令牌环到达站点:1
站点:1占用令牌。
at6.985268659839876 令牌环到达站点:2
设备接收到信息(信息到达目的地):this is a message,send from station:[1]
at7.2708526555495有待发送信息达到1将发送到:2
at8.180663220550873 令牌环到达站点:3
站点:3占用令牌。
at8.29538286801888 令牌环到达站点:4
at8.541581448429252 令牌环到达站点:5
at9.102422129420864 令牌环到达站点:1
设备接收到信息(信息到达目的地):this is a message,send from station:[3]
at9.252412634155595 令牌环到达站点:2
站点:2占用令牌。
at9.285159438089437 令牌环到达站点:3
at9.370895124766186有待发送信息达到2将发送到:3
at9.424753416653166有待发送信息达到3将发送到:1
at9.462944150782874 令牌环到达站点:4
at9.603896915932166 令牌环到达站点:5
设备接收到信息(信息到达目的地):this is a message,send from station:[2]
at9.646161566854136 令牌环到达站点:1
。。。。。
at58.79778619964218有待发送信息达到5将发送到:1
at58.950343086971124 令牌环到达站点:1
at58.976304906272276 令牌环到达站点:2
at59.06803910916516 令牌环到达站点:3
at59.43490825874433 令牌环到达站点:4
设备接收到信息(信息到达目的地):this is a message,send from station:[5]
at59.49120861187437 令牌环到达站点:5
站点:5占用令牌。
at59.51967806654832 令牌环到达站点:1
设备接收到信息(信息到达目的地):this is a message,send from station:[5]
at59.83699716475645 令牌环到达站点:2
站点:2占用令牌。
at59.87952396621764 令牌环到达站点:3
at59.97151538785478 令牌环到达站点:4
at59.97470816701843有待发送信息达到2将发送到:4
at60.032036171679394 令牌环到达站点:5
设备接收到信息(信息到达目的地):this is a message,send from station:[2]
the rate: frame per second is:1.5325150680696344

有兴趣可以参考附件的完整程序。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值