如何在scala

时间:2015-07-18 23:37:05

标签: scala thread-safety

Scala的新手。

我在Scala中使用简单的Web服务做一个简单的项目,所以我不想使用完整的数据库。

我的所有申请都是不可变的。但是我不知道怎样做"数据"一部分。

我的网络服务有GET和一些POST和PUT。所以我希望我的数据是: - 存储在内存中 - 线程安全(如此多的并发PUT不会弄乱它 - 不可知? (我对这个概念不熟悉,但我想这是不可能的)

我想到了一个像这样的对象:

object UserContainer {
    var users: List[User] = initializeUsers()

    def editUser(...) = ...
    def addUser(...) = ...
}

但它不是线程安全的,也不是一成不变的。我发现我可以使用" Actors"或"同步"为了这。 我该怎么办?

1 个答案:

答案 0 :(得分:2)

Actors提供的主要并发抽象是以异步非阻塞方式提供对可变状态的线程安全访问。看起来这是你的用例。

构建构建Web服务的一些选项应该看看Spray.io或akka-http - 两者都基于Akka actor。然而,创建演员(尤其是使用Akka)需要SharedPreferences preferences = getSharedPreferences(PREFS_NAME, MODE_PRIVATE); preferences.edit().putString(TOKEN, token).apply(); ,有些人认为这是重量级的。此外,演员(截至今天)未输入,因此您无法获得Scala的类型安全性。