java - 如果函数调用在多个线程中运行,则中止该函数调用

标签 java javascript multithreading jsp session-timeout

我在我的jsp页面中设置了一个sessionTimeout函数,我通过单击按钮使用iframe调用另一个Jsp页面在另一个jsp页面中我也有这个sessionTimeout函数。因此,该函数是并行运行的。如果有任何方法“如果在不同线程中多次调用同一个函数,那么它应该取消所有其他线程并访问最新线程”,任何人都可以帮助我。

我尝试过使用同步方法,但在功能完成之前它不允许我使用,所以我无法使用同步

有人可以帮我解决这个问题吗?

最佳答案

对于每个浏览器引擎实现,不保证在不同 iframe 中运行的 JavaScript 在同一线程中运行。

您可能需要在父窗口中构建一个任务管理实用程序来跟踪 iframe 实例和 sessionTimeout 函数运行状态(将状态保存在数组/映射中)。由于父级内部的脚本和所有 iframe 在其上下文中都是单线程的,因此您可以在 iframe 中触发 sessionTimout 函数之前检查每个 iframe 的状态。

如果您需要跨域 iframe 通信,您可以阅读这篇文章 http://www.codeproject.com/Tips/585663/Communication-with-Cross-Domain-IFrame-A-Cross-Bro

关于java - 如果函数调用在多个线程中运行,则中止该函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18606852/

相关文章:

javascript - 无溢出的可滚动 div :auto?

c# - 使用 Xamarin 更新 UI

java - 随机类线程安全吗?

java - eclipse rcp e4 : how to highlight the selected tab in part stack?

java - Spring Integration 和 JPA 更新出站网关时出现循环引用错误

java - 如何在系统应用程序的棉花糖中无需用户交互即可授予权限?

javascript - 具有大型数据库的 Typeahead.js 给出未捕获的 TypeError : $(. ..)。typeahead 不是函数

javascript - 如何仅呈现更新后的统计数据 - websockets

java - 确定对象是否为整数

c# - 尝试通过 C# 中的多线程从两个不同的数据库表中获取值