You might want to try out the thread dump produced by the jcmd and Thread.dump_to_file command. This can be used to generate a thread dump in JSON format that is easy to parse. It also includes virtual threads and also preserves the thread groupings. At this time it does not include thread state or lock information. The igr/tdv project clearly stats that it's for the author own use, this issue is really more of an FYI that there is an alternative thread dump that designed to be parsed.