Java spring boot开发使用websocket时使用Synchronized线程锁注解无效问题
问题描述:
开发在线对战答题活动时,开发匹配功能时,发现俩个用户同时进入游戏会创建俩个房间,而不是进入同一个,对房间搜索功能模块使用了线程锁注解,但问题并未解决
问题原因:
采集的我不太明白,个人感觉是使用线程锁注解时,每一次接收消息都会创建一个锁而不是使用同一把锁,希望有大佬解答一下😂
解决方法:
需要时用Synchronized为你的业务代码进行加锁处理,同时这个锁要求是全局唯一锁(全局静态锁)
//ConstUtil是我自己定义的一个静态常量池,内部声明了一个锁
//public static Object lock = new Object();
synchronized (ConstUtil.lock) {
//业务代码
}