>
I already mentioned child processes, which model scaling up to multiple servers better than threads do ...All taking away threads does is eliminate high-value optimization strategies that are available to multi-machine scalable systems that do support threads.
Threads don't dictate shared mutable state as a programming paradigm, they simply make it possible to avoid crossing expensive network and process boundaries where appropriate.
There's nothing stopping you from architecting thread-based architectures to use low-cost in-core dispatch of message within a VM, and save the high-cost serialization, IPC/network overhead for off-machine message dispatch.