Можно ли использовать ThreadLocal контейнер с VirtualThreads? Да, можно!
Для ответа на этот вопрос решил написать тесты https://github.com/batsura-sa/java-samples/tree/main/thread-local-in-threads/src/test/java/org/example
Кратко резюме такое в Java 21 ThreadLocal с VirtualThread работают, что в общем-то и указано в https://openjdk.org/jeps/444 , однако, поскольку виртуальных потоков может быть очень много, используйте ThreadLocal только после тщательного рассмотрения.