我同时调用多个请求(10)HTTP GET方法。这里调用方法将创建不同的线程(如线程1,线程2 ......)
来电方式:
enter code here: for(int i=0;i<10;i++){Thread.currentThread().getId();HttpClient httpClient = new HtpClient(url);res = httpClient.get(5000);}
然后Request将命中应用程序入口点。入口点将为每个请求创建新线程(如线程11,线程12 ......)。
enter code here//public void DoProcess(){Thread.currentThread().getId();// New threads for each request.else........}
但我想知道哪个调用者线程请求创建了应用程序线程。
类似线程1属于线程11
Thread 2 belongs Thread 12
请告诉我,如何实现这一目标。
答案 0 :(得分:0)
客户端通过TCP连接,因此涉及套接字客户端ip和端口。 我不知道HTTPClient api但是如果有一个getClientPort()那么你应该能够打印出时间,线程名称和客户端ip +端口。在服务器上,无论接受套接字还有客户端ip和端口。如果这是一个servlet容器,则servlet请求具有getRemoteAddress()和getRemotePort()。你也可以打印出时间,ip +端口和线程名称。如果你将这些事件堆积在2个表中,你应该能够通过ip +端口加入客户端时间与服务器时间的容差(相隔不到2秒,假设C和S与NTP同时)。 / p>
另一个简单的方法(但是它改变了http的有效载荷)是从客户端向http请求中注入一个HTTP头,声明当前的线程名称/ tid。例如:&#34; my_custom_remote_thread_id:Thread-11&#34;。这样在服务器上,您可以拉取请求标头以计算客户端线程名称/ tid。