JMeter provides an option to run test plan for specified amount of time using scheduler configuration in Thread Group. We just need to check Scheduler checkbox which is available at the bottom of the Thread Group.
We need to configure Duration (in seconds) and Startup Delay (in seconds) to control the duration of each thread group. When the test is started, JMeter will wait for Startup Delay before starting the Threads and run for the configured Duration time.
The Loop Controller value needs to be set to 'Forever' so that it doesn't override the 'Duration' settings in Thread Group. If there is a fixed number defined then JMeter will stop when that gets completed.
Note that Duration and Startup Delay will override the Start time and End time, so even if we give Start Time and End Time, they have no meaning after entering Duration and Startup delay values.
We can use fields Start time and End time where JMeter will wait until the start-time has been reached and at the end of each cycle, JMeter checks if the end-time has been reached, and if so, the run is stopped, otherwise the test is allowed to continue until the iteration limit is reached.
In the above screenshot, we have defined duration value as 300 (seconds), so JMeter will run Test Plan for 5 minutes continuously.
Please let me know if you face any issues or observations in comments.