scala如何使編寫多線程程序比在java中更容易? scala可以做什麼(java不能)來利用多個處理器?Scala對Java的併發編程有什麼優勢?
回答
還有什麼都沒有 Scala確實沒有。那會很愚蠢。 Scala運行在與Java相同的JVM上。
什麼是斯卡拉確實做的是使它更容易編寫,更容易推理和更容易調試多線程程序。
併發性的Scala的好處是它關注不可變對象,它的消息傳遞和它的Actor。
這爲您提供線程安全的只讀數據,將數據傳遞到其他線程的簡單方法以及簡單使用線程池。
我會添加閉包。它確實使許多事情變得更容易。 – 2010-08-21 05:37:16
我也會添加分隔延續,真正改變了編寫併發程序的遊戲場。希望這個驚人的圖書館支持能在幾個月內出現。 – jsuereth 2010-08-21 13:47:50
併發的規則是
1避免它,如果你能
2分享什麼,如果你能
3股不可改變的對象,如果你能
4要非常小心(和幸運的)
對於規則2 Scala通過提供一個很好地集成的消息傳遞庫以演員的形式出現在盒子中。
對於規則3,默認情況下,Scala有助於使一切不可變。
對於規則4 Scala靈活的語法允許創建內部DSL,使其更加容易,不那麼羅嗦地表達您所需要的內容。即少了意外的地方(如果做得好的話)
我認爲#1越來越難以做到。我會說使用一個框架,例如map-reduce或某些fork-join庫,可以幫助您編寫併發程序,而不會感到併發。 – jsuereth 2010-08-21 13:47:07
我同意。仔細檢查您的需求並選擇適合這些需求的併發模式是非常值得的。然後使用一個調試過的庫/框架來實現這些。 – 2010-08-22 19:30:01
#1需要來的名單;相反,我們應該積極尋找利用現代計算機上可用的多CPU核心的方法。 – 2011-01-15 05:25:54
如果以Akka作爲併發(和分佈式)計算的基礎,有人可能會認爲唯一的區別是通常的區分Scala和Java的區別,因爲Akka同時具有Java和Scala綁定所有設施。
- 1. PHP對ASP.NET有什麼優勢?
- 2. Oracle UDF對於Teradata有什麼優勢?
- 3. Hibernate NamingStrategy有什麼優勢
- 4. reftype {}有什麼優勢?
- 5. ListSet或ListMap比Scala中的Set和Map有什麼優勢
- 6. 針對C#的交叉編譯器對java的限制和優勢是什麼?
- 7. 使用Java小程序有什麼優勢?
- 8. 僞會話與會話CICS編程有什麼優勢?
- 9. EntityDataSource與編程綁定有什麼性能優勢嗎?
- 10. java bean比Java Spring中的POJO有什麼優勢?
- 11. SVN和Apache - 有沒有什麼優勢?
- 12. Button上的ImageButton有什麼優勢嗎?
- 13. rsh與Perl的Expect.pm有什麼優勢?
- 14. Anorm(Play Scala)支持流媒體的優勢是什麼?
- 15. pathmunge優於grep的優勢是什麼?
- 16. Kafka優於RabbitMQ的優勢是什麼?
- 17. 沒有ADT開發Android有什麼優勢嗎?
- 18. 致電CRM系統 - 有什麼優勢?
- 19. Digest :: SHA比Digest :: SHA1有什麼優勢?
- 20. AIDL在android中有什麼優勢?
- 21. solr中mutivalued選項有什麼優勢?
- 22. NodeJS,Express,Nginx和Jade ......有什麼優勢?
- 23. 使用scrapyd有什麼優勢?
- 24. Hudson vs使用shellcript有什麼優勢?
- 25. EF4或LINQ到SQL有什麼優勢?
- 26. RVM在Linux上有什麼優勢?
- 27. git比git-svn有什麼優勢?
- 28. ServletRequestWrapper比過濾器有什麼優勢?
- 29. 使用HttpApplication比HttpApplication有什麼優勢?
- 30. 使用Python Virtualbox API有什麼優勢?
Java可以做Scala可以做的任何事情,反之亦然。它們都運行在JVM中,它們都是圖靈完備的,所以根據定義,任何一個都可以做與其他的相同的事情。不同的是,一種語言比另一種語言更容易或更自然。 – cHao 2010-08-20 23:10:13
@cHao @ Zan編輯了一個問題,以更好地解決問題。 :) – 2010-08-20 23:15:13