小编典典

如何检测Swing线程策略违规

java

我正在寻找一种自动方法来检测代码中是否违反了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);
}

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


阅读 168

收藏
2020-11-16

共1个答案

小编典典

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

它确实需要添加:

RepaintManager.setCurrentManager(new CheckThreadViolationRepaintManager());

到您的代码。

2020-11-16