Какие преимущества имеет 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 сосредоточены на неизменяемых объектах, его передаче сообщений и его Актерах.

Это дает вам потокобезопасные данные только для чтения, простые способы передачи этих данных другим потокам и легкое использование пула потоков.