Este código não contém condições de disputa, mas o único algoritmo capaz de detectar isso é Dinning-Schonberg.

Thread t1 = new Thread() {
    public void run() {   
        synchronized (m1) {
            synchronized (m2) {
                a[0] += 1;
            }
        }
    }
};   
Thread t2 = new Thread() {
    public void run() {   
        synchronized (m2) {
            synchronized (m3) {
                a[0] += 2;
            }
        }
    }
};   
Thread t3 = new Thread() {
    public void run() {   
        synchronized (m1) {
            synchronized (m3) {
                a[0] += 3;
            }
        }
    }
};   
t1.start(); t2.start(); t3.start()

Voltar.