The difference between submit and execute method with ThreadPoolExecutor are:
When our tasks throw an exception and if it was submitted with execute this exception will go to the uncaught exception handler. If you submitted the task with submit any thrown exception, checked or not, is then part of the task return status.