我不确定我的方法是否正确,所以我会尽力描述问题。
我正在编写一个连接到服务器的客户端。它经常发出一些(不同的)请求。有时可能会发生请求太多,所以我不得不重新登录。登录由请求标头中设置的令牌验证。
我想实现类似锁/等待对象的东西。大多数请求在单独的线程中运行,但通过相同的函数发送(最终)请求。在这个函数中,我检查响应的有效性,如果服务器决定踢我,我会发送重新登录请求。
我的问题:如果响应无效,我会异步重新登录(响应的 JavaFX 回调)并继续。由于多线程任务,可能存在这样一种情况,即 2 个(或更多)请求获得相同的无效响应并尝试重新登录,或者一个任务在另一个正在登录时尝试执行请求(因此没有有效令牌),接收到无效响应,在另一个接收到有效登录时开始登录,在新登录期间该一个将失效,依此类推。
如何强制我的任务等到另一个人请求的登录完成?最好的方法是什么?
感谢和抱歉语法!