There are also many built in exceptions, such as Jobs, watchdog threads etc.,. If you take a look at the interpreter or the JIT compiler, they both handle threading almost identically to the JVM. That’s not surprising though, because the first JIT compiler was written in Smalltalk by Sun as a prototype for the JVM JIT compiler, and open sourced as StrongTalk.
Pretty much all the other dialects of Smalltalk copied it, although there’s been a lot of improvements since 2006 (the Sista bytecode optimizer and the OpalCompiler to name two major ones. A few ideas were also taken from V8.
IBM demonstrated the scalability of a VM for Squeak and earlier versions of Pharo called RVM (originally Renaissance VM, but open source as Roar VM, I believe it works up to Pharo 3, but nobody has a need for it, so it hasn’t been updated to 6). It scaled with over 90% linearity to 1024 x 8 thread cores. Even IBM doesn’t have a bigger machine to see just how far it can scale.
IBM’s own Smalltalk (an older version is part of VisualAge) is remarkably fast, using preemptive multitasking and a similar scheduler to OS/2 (the designer of OS/2 was one of the original authors of IBM Smalltalk.,
I wrote an embedded piece of software in it in 2002 for the F-35, and it can respond to patterns from 45 sensors on the sub-millisecond level. Since the rules can be input as if/then statements in simple English, it’s been used since by Lockheed, NASA and Northrop Grumman.
Course, partly that’s because nobody really understands how it works, lol.