@Override
    protected void destroy() {
        // We are forking this to avoid that accidental de-referencing causes any random thread doing destruction.
        // This caused a deadlock when the single Messenger thread in MessageBus was the last one referring this
        // and started destructing something that required something only the messenger thread could provide.
        Thread destroyer = new Thread(() -> {
            cron.shutdown();
            synchronized (monitor) {
                for (var iterator = clientFeederByClientId.values().iterator(); iterator.hasNext(); ) {
                    iterator.next().kill();
                    iterator.remove();
                }
            }
        }, "feed-handler-v3-adhoc-destroyer");
        destroyer.setDaemon(true);
        destroyer.start();
    }
One client has one ClientFeederV3 shared between all client threads.
Contains logic for shutting down cleanly as the server is upgraded.

@author Haakon Dybdahl
vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedHandlerV3.java