You are shutting down the thread pool before you are finished.
executor.execute(worker);
will start working on your task in one of the threads in the threadpool. However, this call will not block. Immediately afterwards you do:
executor.shutdown();
This prevents any new jobs from being added and sets a flag for orderly shutdown, but otherwise has no immediate effect in your code. The next line has an effect:
executor.awaitTermination(60, TimeUnit.SECONDS);
This will wait up to 60 seconds for all threads to finish, but then continue after 60 seconds (see doc):
Blocks until all tasks have completed execution after a shutdown request, or the timeout occurs, or the current thread is interrupted, whichever happens first.
Note that the thread pool will keep on running until all tasks have completed, however you are accessing the results too early in your code.
Try increasing the timeout to see whether this is the problem or if something else is wrong in addition to this. For a clean solution to your problem, use the ExecutorCompletionService to wait until all tasks are finished.