Main performance improvement here is to not construct the ArrayDeque till at least the second item is added to the worker.  We take a slight hit when we have to check and maybe construct it when the task is added, but for most use cases this is still an improvement overall.