By the way, JVMs also set thread names for their own housekeeping threads (on Linux at least, not sure from which version) and allow applications to name them too. I wrote an example here:
https://tanelpoder.com/posts/measuring-java-jvm-thread-level...