Был тут давеча один разговор, в котором в том числе затронулась тема erlangVM vs javaVM. В нем форсился тезис о том что машина эрланга ниразу не уникальна и все то же можно сделать на жаве. В том числе и самое артитектурно значимое - разбиение кода на тысячи легковесных процессов\потоков\какещеономожетназываться.
Если кто не знает, в жаве гринтреды есть незнамосколькодавно. И по реализации они вроде как вполне себе легковестны. Насколько давно там есть неблокирующий ввод-вывод не вкурсе, но дело не столько в нем(хотя и в нем тоже, без повальной асинхронности получится очень мрачно и дедлочно).
Собственно в жаве нет возможности синхронизировать переход с одного потока на другой. Во всяком случае я не знаю как не сильно заморачиваясь реализовать посылку сообщения в мэйлбокс зеленой нитки так чтобы эта самая нитка, ежели она находится в состоянии ожидания сообщения из мэйлбокса, сразу начала выполняться независимо от причуд планировщика и без необходимости пистаь сотни тысяч классов под это дело.