java - 如何检测 Swing 线程策略违规

标签 java debugging swing multithreading

我正在寻找一种自动检测代码中违反 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());

然而,你的代码。

关于java - 如何检测 Swing 线程策略违规,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3153574/

相关文章:

java - 布局管理器不起作用

c# - 监 window 口停止接受一些使用

visual-studio - 为什么在 VS2010 中关闭 Just My Code 后无法附加到 w3wp.exe 进程?

java - repaint() 未在 Java 程序中调用

java - GUI 中的循环问题 (java)

java - 类似于 Windows 中的日期时间选择器

java - 将 Spring 字段注入(inject)转换为构造函数注入(inject)(IntelliJ IDEA)?

java - 使用 JNI Java 类的 DLL

java - onKeyDown 不起作用

python - 如何调试静默崩溃?多处理python