Android java.lang.IllegalMonitorStateException: objeto não bloqueado por thread antes de wait ()

Eu defino um objeto estático global como um bloqueio de sincronização.

public static Object ConfirmationSynObj = new Object();

A seguinte função é o que eu escrevi, mas ele lança um IllegalMonitorStateException.

       synchronized (Config.ConfirmationSynObj) {
            new Thread(new Runnable() {

                @Override
                public void run() {
                    //this is a http request
                    appSignInfo = getAPKSignature(context, pkinfo.packageName);
                    Config.ConfirmationSynObj.notify();
                }
            }).start();
            try {
                Config.ConfirmationSynObj.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            if (appSignInfo == null) {
                return ret;
            }
        }

Alguém sabe como bloquear um objeto ou uma função para evitar a simultaneidade?