@Component单例与并发(未解决)

时间:2023-03-08 18:10:32

今天用websocket记录连接的个数;

模拟少量请求到服务器端的websocket,@Component默认是单例的,让其注解到MyWebSocket类上;

每次请求过来都是相同的MyWebSocket对象,但是是不同的内存,修改其中之一对象的某些属性不会改变其他的对象的属性,可以使用static让多个连接请求共享变量的最终值,想要获得实时的值,让写操作与读同步就行。

错误的想法:想象成了同一块内存了,多个请求被同一块内存处理。

应该是初始是被相同的对象处理,但是这些对象仅仅是引用相同,所占内存不同。

如图3个客户端连接上websocket服务器,打印每一个MyWebSocket对象的hashcode:

@Component单例与并发(未解决)

结果发现是不同的。

感觉上面的还是不对,这里应该是@ServerEndpoint(value = "/websocket"),难道是这个问题?

或者说是每个连接都是不同的MyWebSocket,但是又使用了@Component注解啊,应该是单例呀,怎么互相矛盾呢?