java actor和线程有什么区别_Scala Actor与java并发编程的区别
1.Scala中Actor是什么
Scala的Actor類似于Java中的多線程編程。但是不同的是,Scala的Actor提供的模型與多線程有所不同。Scala的Actor盡可能地避免鎖和共享狀態,從而避免多線程并發時出現資源爭用的情況,進而提升多線程編程的性能。此外,Scala Actor的這種模型還可以避免死鎖等一系列傳統多線程編程的問題。
2.Scala中Actor與java多線程的區別
在Java,我們都知道它的多線程實現需要對共享資源(變量、對象等)使用synchronized 關鍵字進行代碼塊同步、對象鎖互斥等等。而且,常常一大塊的try…catch語句塊中加上wait方法、notify方法、notifyAll方法是讓人很頭疼的。原因就在于Java中多數使用的是可變狀態的對象資源,對這些資源進行共享來實現多線程編程的話,控制好資源競爭與防止對象狀態被意外修改是非常重要的,而對象狀態的不變性也是較難以保證的。 而在Scala中,我們可以通過復制不可變狀態的資源(即對象,Scala中一切都是對象,連函數、方法也是)的一個副本,再基于Actor的消息發送、接收機制進行并行編程。
3.Scala 與spark 并發編程
Spark中使用的分布式多線程框架,是Akka。Akka也實現了類似Scala Actor的模型,其核心概念同樣也是Actor。因此只要掌握了Scala Actor,那么在Spark源碼研究時,至少即可看明白Akka Actor相關的代碼。但是,換一句話說,由于Spark內部有大量的Akka Actor的使用,因此對于Scala Actor也至少必須掌握,這樣才能學習Spark源碼。
總結
以上是生活随笔為你收集整理的java actor和线程有什么区别_Scala Actor与java并发编程的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java根据文件路径读取文件_java根
- 下一篇: inception mysql 审核_m