Java Web Socket ServerEndpoint 线程安全
Java Web Socket ServerEndpoint Thread Safety
各个 ServerEndpoint 是否线程安全,或者它们是否属于在给定时间与它们交互的所有客户端?
或者用另一种方式来问同样的问题:
ServerEndpoint class 中的全局对象是否存在产生并发问题的危险,?
This example好像说明每个Endpoint都是线程安全的,或者他只是在用Set,祈祷不要弹出并发问题?
因此,假设它们是线程安全的,容器(Tomcat、Glassfish 等)是否会在每次来自不同客户端的新连接时创建 ServerEndpoint class 的新实例成立了吗?
默认情况下,每个客户端连接都会创建新的 @ServerEndpoint
实例。 (这似乎也是最后一个问题的答案)。
必须同步静态对象(或对它们的访问)。
链接示例使用了synchronizedSet
,所以看起来没问题。
此外 - @OnMessage
方法不会在之前的 @OnMessage
处理结束之前被触发,但它可以从不同的线程调用。这意味着您将始终按顺序处理传入的消息。
各个 ServerEndpoint 是否线程安全,或者它们是否属于在给定时间与它们交互的所有客户端?
或者用另一种方式来问同样的问题: ServerEndpoint class 中的全局对象是否存在产生并发问题的危险,?
This example好像说明每个Endpoint都是线程安全的,或者他只是在用Set,祈祷不要弹出并发问题?
因此,假设它们是线程安全的,容器(Tomcat、Glassfish 等)是否会在每次来自不同客户端的新连接时创建 ServerEndpoint class 的新实例成立了吗?
默认情况下,每个客户端连接都会创建新的 @ServerEndpoint
实例。 (这似乎也是最后一个问题的答案)。
必须同步静态对象(或对它们的访问)。
链接示例使用了synchronizedSet
,所以看起来没问题。
此外 - @OnMessage
方法不会在之前的 @OnMessage
处理结束之前被触发,但它可以从不同的线程调用。这意味着您将始终按顺序处理传入的消息。