Android java.lang.IllegalMonitorStateException: objeto no bloqueado por hilo antes de esperar ()

Defino un objeto estático global como un bloqueo de sincronización.

public static Object ConfirmationSynObj = new Object();

La siguiente función es lo que escribí, pero arroja una excepción 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;
            }
        }

¿Alguien sabe cómo bloquear un objeto o una función para evitar la concurrencia?

Respuestas a la pregunta(4)

Su respuesta a la pregunta