Java and Crystal are not equivalent - neither have preemptible threads. Lots of other languages have co-routines or other cooperative systems - async/await are really just variants of that.
I didn't check if Gossamer is actually preemptible.
I believe the short list of production languages with preemptible M:N schedulers are limited to:
Erlang/Elixir
Haskell
Go