Какие преимущества имеет Scala для Java для параллельного программирования?
Как scala упростить запись многопоточных программ, чем в java? Что может сделать scala (что java не может), чтобы облегчить использование нескольких процессоров?
Ответы
Ответ 1
Правила для concurrency:
1 избегайте этого, если вы можете
2 ничего не сообщайте, если вы можете
3 делятся неизменяемыми объектами, если вы можете
4 быть очень осторожным (и повезло)
Для правила 2 Scala помогает, предоставляя красиво интегрированную библиотеку передачи сообщений из коробки в форме участников.
Для правила 3 Scala помогает сделать все неизменным по умолчанию.
Для правила 4 Scala гибкий синтаксис позволяет создавать внутренние DSL, что делает его проще и менее многословным, чтобы выразить то, что вам нужно. то есть меньше места для сюрпризов (если все сделано хорошо)
Ответ 2
Если вы берете Akka в качестве основы для параллельных (и распределенных) вычислений, можно утверждать, что единственное отличие - обычное дело который отличает Scala от Java, поскольку Akka имеет как Java, так и Scala привязки для всех своих возможностей.
Ответ 3
Нет ничего Scala, что эта Java не делает. Это было бы глупо. Scala работает на той же JVM, что и в Java.
Что делает Scala, так это упростить запись, проще рассуждать и проще отлаживать многопоточную программу.
Хорошие бит Scala для concurrency сосредоточены на неизменяемых объектах, его передаче сообщений и его Актерах.
Это дает вам потокобезопасные данные только для чтения, простые способы передачи этих данных другим потокам и легкое использование пула потоков.