ShutdownEndpoint creates a thread to call close on the application context to shutdown the application. This is done in a thread to give the webserver the time it needs to send the response to the client.
Migrating this to a virtual thread doesn't bring much benefits.