scala.concurrent.forkjoin.ForkJoinPool против java.util.concurrent.ForkJoinPool

Почему ForkJoinPool был создан для Scala?

Какая реализация и для какого случая предпочтительнее?


person Andriy Plokhotnyuk    schedule 28.01.2013    source источник


Ответы (1)


Очевидная причина, по которой библиотека scala должна иметь собственную копию ForkJoinPool, заключается в том, что scala должна работать на JVM до версии 1.7, а ForkJoinPool появилась только в Java 1.7.

Кроме того, было сделано несколько изменений для внутреннего (scala) использования, например:

https://github.com/scala/scala/commit/76e9da2ca4c31daec2b04848c3c2dbad6ecd426e

Учитывая, что версия scala, вероятно, не даст вам никаких преимуществ (если вы компилируете и работаете с java 1.7), я бы сказал, что для собственного использования вам, вероятно, следует использовать версию java. По крайней мере, версия java точно задокументирована и полностью «общедоступна», в то время как статус версии scala неясен (она вполне может быть предназначена только для внутреннего использования). Однако в некоторых местах у вас может не быть выбора. Например, ForkJoinTasks имеет метод forkJoinPool, который ожидает scala-версию ForkJoinPool. Если кто-то может получить/найти какой-либо официальный статус версии ForkJoinPool для scala, утверждающий, что она действительно общедоступна и стабильна, я с радостью вернусь к этому совету.

person Régis Jean-Gilles    schedule 28.01.2013