add try-finally
synchronize access to the ExecutorService