如何使用Java检测同步违规

Tou*_*uko 9 java multithreading synchronization error-detection

我想知道有什么好方法可以对同步进行断言或者某些事情以便我可以检测同步违规(在测试时).

例如,我将使用一个不是线程安全且不会是线程安全的类的情况.通过某种方式,如果从多个线程调用某些方法,我会有一些断言可以通知我(日志或其他东西).

我渴望能够为AWT调度线程做类似的事情,具体如下:

public static void checkDispatchThread() {
    if(!SwingUtilities.isEventDispatchThread()) {
        throw new RuntimeException("GUI change made outside AWT dispatch thread");
    }
}
Run Code Online (Sandbox Code Playgroud)

我只想要更通用的东西.问题描述不是很清楚,但我希望有人有一些好方法=)

Ste*_*eod 2

我想你正在寻找圣杯。AFAIK 它不存在,并且 Java 不是一种允许轻松创建这种方法的语言。

《Java 并发实践》中有一节是关于测试线程问题的。它特别引起人们注意它的难度。