Как обнаружить нарушения политики потока Swing

Я ищу автоматический способ обнаружить нарушения единственной потоковой политики Swing в моем коде. Я ищу что-то вроде некоторого кода AOP, Вы заскакиваете в VM, в то время как приложение колебания работает, и имейте его, регистрируют любые места, где компонент колебания изменяется за пределами EDT.

Я не парень AOP, но я предположил бы создавать прокси AOP вокруг каждого java.swing.* класс, который похож

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

 invoke(m, args);
}

Кто-либо знает о проекте или утилите, которая делает это?

11
задан Justin 30 June 2010 в 21:29
поделиться

2 ответа

Я не использовал именно этот, но этот CheckThreadViolationRepaintManager должен помочь.

Однако он требует добавления:

RepaintManager.setCurrentManager(new CheckThreadViolationRepaintManager());

в ваш код.

8
ответ дан 3 December 2019 в 08:28
поделиться

Я нашел сообщение в блоге 4-летней давности, описывающее некоторые решения , но мне было бы очень интересно, если бы вы нашли то, которое обнаруживает наибольшее количество нарушений EDT. RepaintManager, похоже, не надежен при обнаружении всех нарушений.

3
ответ дан 3 December 2019 в 08:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: