我有一个排队论"以下问题:
然而,我发现Queue总是在建立(在两个系统上运行 - 客户端和服务器PC /笔记本电脑),
注意:当我在同一系统上运行进程时,Queue不会构建,并且大部分时间都是接近1到20个数据包。
需要有人检查/查看我的代码。
代码粘贴在此处:
客户(单班):
服务器(多个类文件包: serverClasses :
" QUEUE_LEN的样本图表。 #PACKETS"对于10MBps和10000字节大小的数据包,持续时间为30 - 35秒
答案 0 :(得分:2)
在客户端上,它看起来我timeinterval
总是会是0.这是内涵吗?你在代码中说秒,但你错过了* 1000
。
timeInterval = 1 / ( noOfPacketsToBeSent );
然后你拨打Thread.sleep((long) timeinterval)
。由于sleep()
需要long
,所以这最多只能睡1ms而且通常(我怀疑)睡眠0ms。睡眠只有毫秒级的分辨率。如果你想要纳秒分辨率,你就必须做类似的事情:
TimeUnit timeUnit = TimeUnit.NANOSECONDS;
...
timeUnit.sleep(50);
我怀疑当客户端和服务器都在同一个盒子上时,你的CPU限制了你的运行。当它们位于不同的盒子上时,由于睡眠时间不当,客户端实际上充斥着服务器,所以事情会备份。
这至少是我最好的猜测。