Use the java ThreadPoolExecutor to keep threads alive and reusable

The ThreadPoolExecutor service is a quick, efficient, and easy way to
run async operations often