2016-02-04 72 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。