I have read in so many places, that Thread pools reduce the thread creation overhead which results in improved performance. But once a thread completes executing its run method, it goes to Dead/Terminated state which means it can be restarted again.
So, how does thread pool handles releasing of threads? Does it really holds the thread some way for serving next task or internally it creates new thread every time a task is submitted?