在MultiThread方面比较java和scala

Cla*_*Bao 2 java multithreading scala concurrent-programming

我只是听到并看到有人说scala是为MultiThread设计的,尽管它实际上是出于通用目的.

它声称"事情是,虽然你可以在Java中创建线程安全的类(如果你知道你正在做什么),Scala让它变得简单而自然."

事实上,AKKA和Lift是用scala编写的.(实际上是java和scala)

但java在java.util.concurrent的新包中也在这方面做了改进.那么为什么AKKA和Lift出生在JAVA?

也许你会说scala使java看起来像C. :-)

任何人都可以对此有更深入的了解或深入的想法?

我知道可以混合使用JAVA和scala.Scala能够无缝地调用Java代码.那么java有什么,scala也是如此.

但是scala真正改进了java还没有完成,不管语法不同?

只有一些设计像演员/代理或其他什么?(注意Actors/Agents无法解决MultiThread中的所有问题.)

或者scala编译器和采用一些函数式语言语法真的比java更重要或帮助吗?

我听到一些消息称scala将能够采用XText.为了能够利用XText编写线程逻辑,不确定这是否属实.

Scala看起来像是语言的混合物,使用这种方法可以更加可扩展地解决这方面的问题?

UPDATE

感谢您从不同角度出色的答案.我认为他们都非常好.无论你站在哪一边.

编辑

下面的主题(在一年前的SO中)询问了类似的事情."建设性"结论非常相似.但这一次,一些新的观点可能会出现,我要问的方式有点不同.仅供参考.

有关:

其实我很感兴趣,有些人可以用一些全新的角度回答这个问题,这可以启发我的思想,提供一些未知的想法.

但由于没有建设性,它已经关闭了.:-)

Mch*_*chl 6

我并不是真正的专家,但Scala是一种(部分至少)功能性编程语言,而Java则不是(这是必要的).函数式编程的一个特征是它避免(以"自然"方式)副作用.

另一方面,线程安全性几乎是避免副作用(即不同的线程同时修改相同的对象/部分内存/其他资源).