簡體   English   中英

Java-同時使用Java中的多線程處理多個HTTP請求

[英]java - multiple http requests at same time With multi threading in java

我在同一時間通過HTTP GET方法調用多個request(10)。這里調用方法將創建不同的線程(如線程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將命中應用程序入口點。入口點將為每個請求創建新線程(類似於Thread 11,Thread 12 ....)。

enter code here//public void DoProcess(){Thread.currentThread().getId();// New threads for each request.else........}

但是我想知道哪個調用者線程請求創建了應用程序線程。

就像線程1屬於線程11

 Thread 2 belongs Thread 12

請讓我知道如何實現這一目標。

客戶端通過TCP連接,因此涉及套接字客戶端ip和端口。 我不是很了解HTTPClient api,但是如果有一個getClientPort(),那么您應該可以打印出時間,線程名稱和客戶端ip + port。 在服務器上,接受套接字的任何內容也將具有客戶端ip和端口。 如果這是一個servlet容器,則servlet請求具有getRemoteAddress()和getRemotePort()。 您也可以在其中打印時間,ip +端口和線程名稱。 如果將這些事件堆放在2個表中,則應該能夠通過ip + port加入,並且對客戶端時間與服務器時間有一定的容限(假設C和S與NTP同時在同一時間,則嘗試相隔少於2秒)。

另一個簡單的方法(但它更改了http有效負載)是將來自客戶端的HTTP標頭注入http請求,說明當前線程名稱/ tid。 例如:“ my_custom_remote_thread_id:線程11”。 這樣,在服務器上,您可以拉出請求標頭以計算客戶端線程名稱/ tid。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM