2016-02-04 70 views
0

我在同一时间调用多个请求(10)HTTP GET方法。这里的调用方法会创建不同的线程(如线程1,线程2 ... )java - 多个http请求同时在java中使用多线程

来电方法:

enter code here: for(int i=0;i<10;i++){Thread.currentThread().getId();HttpClient httpClient = new HtpClient(url);res = httpClient.get(5000);} 

然后请求将达到应用程序的入口point.The切入点将为每一个请求(如丝线那样的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

当线程1创建线程11时,将线程1的引用传递给线程11。 –

回答

0

客户端通过TCP连接,因此有一个套接字客户端ip和端口参与。 我不知道HTTPClient API,但如果有一个getClientPort(),那么你应该能够打印出时间,线程名称和客户端IP +端口。在服务器上,无论接受套接字,都会有客户端IP和端口。如果这是一个servlet容器,则该servlet请求具有getRemoteAddress()和getRemotePort()。您也可以打印出时间,IP +端口和线程名称。如果你将这些事件放在两个表中,你应该可以通过ip +端口加入,并在客户端时间与服务器时间之间进行宽容(假设C和S与NTP同时使用,尝试时间间隔小于2秒)。

另一个微不足道的方法(但它改变了HTTP负载)是从客户端向HTTP请求中注入一个HTTP标头,指出当前线程名称/ tid。例如:“my_custom_remote_thread_id:Thread-11”。通过这种方式,您可以在服务器上拉取请求头来确定客户端线程名称/ tid。