That's not even remotely the same thing as the current virtual threads, that automagically turn (many kind of) blocking IO into non-blocking.
If "automagically" means "the way Golang does it" then that's kinda the whole point of M:N threads/fibers.
If by "cheap threads" you mean M-on-N threads a.k.a. fibers/green threads, Java had that on Solaris well before Go.