我在 Google App Engine 上使用 Restlet 2.1.2,我正在考虑它的线程安全性。<threadsafe>
在我的 GAE 配置中设置为 true。
一般来说,文档中有一些类的并发说明,例如ServerResource
类是线程安全的,并且为每个调用者线程创建一个新实例。这意味着,我可以安全地将状态存储在成员变量中(例如来自请求 URL 的参数)。此外,Filter
该类不是线程安全的,并且此类的一个对象可以由多个线程同时调用,因此无法将状态保存在成员变量中,并且ThreadLocal
可以/应该使用类似的东西。
此外,所有Authenticator
子类都不是安全的,因为它们是Filter
. Authenticators
使用 aVerifier
来验证登录凭据,并且类的文档中没有并发注释Verifier
...
我的问题是:
1)我可以安全地将某些状态存储在Verifier
子类中还是必须使用类似的东西ThreadLocal
?我认为第二种选择是正确的。...我只想读取一个数据存储区来获取用户帐户,然后User
根据此信息创建一个实例。我正在继承一个SecretVerifier
.
2)在某个地方是否有一个示例/文章,其中包含有关 Restlet 中这些多线程问题的信息,而不仅仅是分散在文档中?至少有关每个调用者线程具有实例的类以及在多个调用者线程之间共享哪些实例的信息会很好。