I have a one thread group with 100 requests in it, I am passing some ids from one request to another (it is a one complete flow of application). What I want to achieve is if I give 50 threads, each thread should execute all requests without affecting the other thread flow. i.e, each thread should complete one flow of the application. And it should be done concurrently. We can achieve it by creating 50 thread groups but it does not seems to be good to have 50 thread groups. Is there any way to do it?
JMeter threads are absolutely independent, their context (session state, variables, etc) are stored locally hence each thread represents an individual virtual user.
As you can see in below example 1 have 3 virtual users and they have different tokens while executing the same requests:
So it's absolutely OK to have 1 thread group as long as it represents single logical group of virtual users. The actual concurrency will depend on various factors like application response time, ramp-up period and test duration, check out What is the Relationship Between Users and Hits Per Second? for more insights.