If anyone has the same question with the "Close the Connection as soon as you are done with all the threads" like I did, Thakur suggested we can use workerThread.join() to wait till the thread dies, then we close the connection afterward.
Thanks for Thakur pointing it out. Matthew