Don't synchronise the queue.put() since it may block. The queue itself is thread-safe by definition, and nothing should change the pool members under us, so this should be safe.