Concurrency Java Web套接字服务器端点线程安全

Concurrency Java Web套接字服务器端点线程安全,concurrency,websocket,java-ee-7,Concurrency,Websocket,Java Ee 7,单个ServerEndpoints是线程安全的还是属于在给定时间与它们交互的所有客户端 或者用另一种方式问同样的问题: ServerEndpoint类中的全局对象是否存在创建并发问题的危险 似乎表明每个端点都是线程安全的,或者他只是在使用Set并祈祷并发性问题不会出现 因此,假设它们是线程安全的,容器(Tomcat、Glassfish等)是否会在每次从不同客户端建立新连接时创建ServerEndpoint类的新实例?默认情况下,每个客户端连接都会创建新的@ServerEndpoint实例。(这似

单个ServerEndpoints是线程安全的还是属于在给定时间与它们交互的所有客户端

或者用另一种方式问同样的问题: ServerEndpoint类中的全局对象是否存在创建并发问题的危险

似乎表明每个端点都是线程安全的,或者他只是在使用Set并祈祷并发性问题不会出现


因此,假设它们是线程安全的,容器(Tomcat、Glassfish等)是否会在每次从不同客户端建立新连接时创建ServerEndpoint类的新实例?

默认情况下,每个客户端连接都会创建新的
@ServerEndpoint
实例。(这似乎也是最后一个问题的答案)

静态对象(或对它们的访问)必须同步

链接的示例使用了
synchronizedSet
,所以看起来还可以


另外-
@OnMessage
方法在前一个
@OnMessage
处理结束之前不会被触发,但它可以从不同的线程调用。这意味着您将始终按顺序处理传入消息。

关于您的最后一句话,它会按顺序为每个客户端处理所有传入消息吗?(或ServerEndpoint的每个实例)Nvm,我刚刚在这里找到了您的帖子:如果传入消息按顺序处理,那么池中有多个线程的目的是什么?例如,在Tyrus源代码中,我看到1个选择器线程和2个工作线程。为什么是2?