This is a performance based question.
I have developed a Java EE Webservice Application based on Apache CXF Web Services.
The application is working fine without any issues currently.
I just want to know how can we know how much time each thread (request) has taken for execution?
The way this is done in real load testing tools (such as LoadRunner) is that you collect ALL the times into a database, and when producing a report you select the averages in blocks of x seconds from the database on the fly when you generate the report/graph. (The blocks of x seconds is often called Granularity)
This allows for changing the granularity to suit your needs when you generate the report.
And just to clarify here that executing 2000 requests AT THE SAME TIME is insane. It gives you little to nothing in terms of usable performance data. Executing 2000 requests over a time period is another thing entirely.
Ex. 2000 requests in a 30 second period gives you 66.66667 requests/sec (avg), and if the avg response time was 4 sec/request this would actually tell you something about the system performance..