Я уже много лет являюсь разработчиком Java, но мне никогда не приходилось сталкиваться с проблемами concurrency, пока я не начал заниматься разработкой Android, и внезапно начал находить "приложение, не отвечающее" и очевидные ситуации взаимоблокировки.
Это заставило меня понять, как трудно понять и отладить некоторые из этих проблем concurrency. Как новые языки, такие как Scala и Go, улучшают concurrency? Как они более понятны и как они предотвращают ошибки concurrency? Может ли кто-нибудь предоставить примеры в реальном мире, демонстрирующие преимущества?