Какие преимущества у Scala перед Java для параллельного программирования? - PullRequest
14 голосов
/ 21 августа 2010

Как scala может сделать написание многопоточных программ проще, чем в java? Что может сделать Scala (чего не может Java), чтобы облегчить использование нескольких процессоров?

Ответы [ 3 ]

14 голосов
/ 21 августа 2010

Правила для параллелизма:

1, избегайте его, если вы можете

2 не делиться ничем, если вы можете

3 делиться неизменными объектами, если вы можете

4 Будьте очень осторожны (и удачливы)

Для правила 2 Scala помогает, предоставляя красиво интегрированную библиотеку передачи сообщений из коробки в форме актеров.

Для правила 3 ​​Scala помогаетсделать все неизменным по умолчанию.

Для правила 4 гибкий синтаксис Scala позволяет создавать внутренние DSL, делая его проще и менее многословным, чтобы выразить то, что вам нужно, кратко.т.е. меньше места для сюрпризов (если все сделано хорошо)

12 голосов
/ 21 августа 2010

Если принять за Akka за основу для параллельных (и распределенных) вычислений, можно утверждать, что единственное отличие - это обычные вещи, отличающие Scala от Java, поскольку Akka имеет привязки Java и Scala для всех его объекты.

6 голосов
/ 21 августа 2010

Нет ничего Scala делает то, чего нет у Java.Это было бы глупо.Scala работает на той же JVM, что и Java.

То, что делает Scala , - это облегчение написания, упрощение рассуждений и отладка многопоточной программы.

Хорошим преимуществом Scala для параллелизма является его сосредоточенность на неизменяемых объектах, его передаче сообщений и его субъектах.

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

...