Verwendet Scala nicht die Kernbibliotheken von Java, die alle Threading- und Sperrprobleme von Java auf Scala übertragen?
Ja, und wenn Sie sich in Scala einschließen, treten dieselben Probleme auf. Der Punkt ist jedoch, dass Sie dies nicht tun sollten, da Scala Ihnen Abstraktionen zur Verfügung stellt, die dieses Problem sicherer behandeln.
Jetzt macht Scala zwei Dinge, die wirklich helfen. Eines davon ist das Schauspieler-Modell, das als Parallelitätsmuster betrachtet werden kann und von Scala als Bibliothek bereitgestellt wird. Wenn Sie ein Java-Programmierer sind, empfehle ich Ihnen, zur Akka- Site zu gehen und sich deren Java-Inhalte anzusehen. Dies ist die Bibliothek, die die aktuelle Schauspieler-Bibliothek von Scala ersetzt, und Sie können sie von Java aus verwenden.
Das zweite, was Scala dabei hilft, ist die Verwendung unveränderlicher Datenstrukturen. Nichts hindert Java daran, unveränderliche Datenstrukturen zu verwenden - String
zum einen ist es selbst unveränderlich! Unveränderliche Datenstrukturen leiden nicht unter Parallelitätsproblemen, da Threads sie nicht ändern können.
Es gibt andere Dinge, die dazu beitragen, vollständige Lösungen zu erstellen, wie z. B. Agenten und stm (beide von Akka erhältlich) oder Latches (von Java).
Nun können die beiden oben genannten Dinge in Java ausgeführt werden, wie ich selbst sagte. Sie können Akka in Java verwenden und unveränderliche Datenstrukturen in Java schreiben (oder aus Bibliotheken verwenden, die diese bereitstellen). Java macht es jedoch schwierig, dieses Zeug zu verwenden, da es weder Typen höherer Ordnung noch Schließungen und erstklassige Funktionen unterstützt.
Während Sie dies tun können, werden Programmierer dies normalerweise nicht tun, da das Schreiben eines solchen Codes in Java sehr ausführlich ist (ich meine, viel mehr als der Standard für Java).