当前位置: 首页 > 面试题库 >

如何检测Swing线程策略违规

梅跃
2023-03-14
问题内容

我正在寻找一种自动方法来检测代码中是否违反了Swing的单线程策略。我正在寻找一些在Swing应用程序运行时放入VM的AOP代码,并记录在EDT外部修改Swing组件的任何位置。

我不是AOP专家,但我可以想象围绕每个java.swing。*类创建一个AOP代理,如下所示:

AOP_before(Method m, Object args[]) {
 if (!isEventDispatchThread(Thread.currentThread()) {
  logStack(new RuntimeException("violation!"));
 }

 invoke(m, args);
}

有人知道这样做的项目或实用程序吗?


问题答案:

我没有使用过这个特定的工具,但是这个CheckThreadViolationRepaintManager应该可以解决问题。

它确实需要添加:

RepaintManager.setCurrentManager(new CheckThreadViolationRepaintManager());

到您的代码。



 类似资料:
  • app/movie.component.ts 让我们再回顾一下它背后的逻辑。 当用户单击按钮时,调用方法并更新actor对象的属性。 当变化检测分析绑定到AppComponent模板的属性时,它将看到与之前相同的景象: Is slogan !== previousSlogan No, it’s the same. Is ? No, it’s the same. 让我们重新运行应用程序,但这次我们将

  • 由于双向数据绑定的本质,在Angular 1中不能保证父节点在子节点之前总是被检查。 有可能子节点可以改变父节点或兄弟节点或树中的任何其他节点,这又会在链中触发新的更新。 这使得变化检测机制难以遍历所有节点,并可能掉入具有臭名昭着的“震荡”循环中: 在Angular 2中,改变被保证单向传播。 更改检测器将遍历每个节点一次,始终从根开始。 这意味着父组件始终在其子组件之前检查。

  • Ansible Playbooks 的集成测试 很多时候, 人们问, “我怎样才能最好的将 Ansible playbooks 和测试结合在一起?” 这有很多选择. Ansible 的设计实际上是一个”fail-fast”有序系统, 因此它可以很容易地嵌入到 Ansible playbooks. 在这一章节, 我们将讨论基础设施的集成测试及合适的测试等级. Note 这是一个关于测试你部署应用程序

  • 在Java中,线程可以有不同的状态: 新建、可运行、阻止、等待、定时等待、终止 但是,当线程被IO阻塞时,其状态为“RUNNABLE”。我如何判断它是否被IO阻止?

  • 我发现令人惊讶的是,Java有时可以为你检查比较器合同。 例如,当您编写不遵循传递性的顺序关系时,您会得到 如何能够制止这种违反行为?Java是如何实现的? (不知道我在说什么就看这个问题)

  • 当我访问我的网页时,我在浏览器中收到内容安全策略违反报告: [仅报告]拒绝加载映像“”,因为它违反了以下内容安全策略指令:“img src‘self’”。 当我调查HTTP响应标头时,内容-安全-政策-报告-仅标头或内容-安全-政策标头似乎都不是由源服务器设置的。 如何找到此违规报告的来源?我不确定为什么会生成它,因为相关的头似乎没有设置。