我实现了一个客户端/服务器应用程序,我试图从客户端检查已用时间。但它有时会少于服务器端的经过时间。如下面的代码片段所示,客户端(对象延迟创建套接字通信)向服务器端发送一个请求,该请求总是花费500ms来执行并响应客户端。
在客户端: 在下面的代码片段中,客户端发送10个请求
public class ThreadTest {
public static void main(String[] args) {
long b = 0;
long e = 0;
for(int i = 0; i < 10; i++){
b = System.currentTimeMillis();
delay.delay(); // this class creates a socket and sends a request
e = System.currentTimeMillis();
System.out.println("Elapsed time: " + ((e - b)) + "ms");
}
}
}
在服务器端(这是Server套接字应用程序执行的类):
public class Delay {
public void delay(){
long ini = System.currentTimeMillis();
long end = System.currentTimeMillis();
while((end - ini) < 500)
end = System.currentTimeMillis();
System.out.println("Request arrived " + (end - ini) + "ms.");
}
}
客户端和服务器都在不同的KVM虚拟机上运行。
屏幕上的结果: 客户方:
root@camid00:~/camid# Elapsed time 744ms
Elapsed time 572ms
**Elapsed time 452ms**
Elapsed time 701ms
Elapsed time 580ms
Elapsed time 592ms
**Elapsed time 468ms**
**Elapsed time 424ms**
Elapsed time 588ms
Elapsed time 632ms
**Elapsed time 380ms**
服务器端:
Elapsed time on server side 500ms.
Elapsed time on server side 504ms.
Elapsed time on server side 500ms.
Elapsed time on server side 500ms.
Elapsed time on server side 500ms.
Elapsed time on server side 500ms.
Elapsed time on server side 500ms.
Elapsed time on server side 500ms.
Elapsed time on server side 500ms.
Elapsed time on server side 501ms.