Потоки в 1.9 являются нативными, но они "замедлены", чтобы позволить одновременно запускаться только одному потоку. Это связано с тем, что это может привести к путанице в существующем коде, если потоки действительно будут работать параллельно.
Плюсы:
- IO теперь асинхронный в потоках. Если поток блокируется на IO, тогда другой поток продолжит, пока IO не закончится.
- C расширения могут использовать истинную многопоточность.
Минусы:
- Любые расширения C, которые не являются поточно-ориентированными, могут иметь проблемы, которые трудно найти при использовании Thread. Невозможно пометить расширение как небезопасный поток, чтобы предотвратить его использование с потоками.
- Имя класса такое же. Родной класс потоков должен был называться как-то иначе.
- И что хуже всего, многопоточность на разных платформах работает по-разному! Например,
priority()
отличается в Solaris, Windows и Linux. Такие вещи, как loop {}
, отлично работают в Linux, другие потоки получают шанс на запуск. Однако в потоках Solaris этот поток затягивает время процесса, и вы никогда не выйдете!