作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
单个 ServerEndpoints 线程安全还是属于在给定时间与其交互的所有客户端?
或者用另一种方式问同样的问题:
ServerEndpoint 类中的全局对象是否存在产生并发问题的危险,like they do in HttpServlets ?
This example似乎表明每个端点都是线程安全的,或者他只是在使用 Set 并祈祷并发问题不会出现?
因此,假设它们是线程安全的,容器(Tomcat、Glassfish 等)是否会在每次建立来自不同客户端的新连接时创建 ServerEndpoint 类的新实例?
最佳答案
默认情况下,每个客户端连接都会创建新的 @ServerEndpoint
实例。 (这似乎也是最后一个问题的答案)。
静态对象(或对它们的访问)必须同步。
链接示例使用 synchronizedSet
,所以看起来没问题。
另外 - @OnMessage
方法不会在前一个 @OnMessage
之前触发处理结束,但它可以从不同的线程调用。这意味着您将始终按顺序处理传入的消息。
关于concurrency - Java Web Socket ServerEndpoint 线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36048288/
我是一名优秀的程序员,十分优秀!