Android: SQLite + SharedPreferences, 2 hilos ¿Lectura / escritura simultánea?

Tengo dos partes de un programa (la aplicación real y un BroadcastReceiver) que posiblemente podrían intentar conectarse y modificar una base de datos SQLite y un archivo SharedPreferences.

1) Sé que puede hacer múltiples conexiones a una sola base de datos SQLite. También leí que SQLite puede "bloquear" la base de datos cuando intenta modificar o leer desde una base de datos (ACTUALIZAR, INSERTAR, etc.), entonces, ¿cómo manejo adecuadamente el caso donde 2 hilos intentan modificar / leer una sola base de datos SQLite en ¿al mismo tiempo?

En este momento, tengo este fragmento de código en el código / clase de conexión de mi base de datos:

private SQLiteDatabase myDatabase;
public boolean insert(ContentValues columnValueMap) throws Exception
    {
        long result = 0;
        int attempt =0;
        do
        {
            if(!myDatabase.isDbLockedByOtherThreads() && !myDatabase.isDbLockedByCurrentThread())
            {
                synchronized (myDatabase)
                {
                    result=myDatabase.insertOrThrow(TABLE_NAME, TEXT, columnValueMap);
                    if(result ==0 || result == -1)
                    {
                        return false;
                    }
                    return true;
                }
            }
            else
            {
                Thread.sleep(50);
            }
            attempt++;
        }while(attempt<=5);

        throw new Exception("Database Locked!");
    }

2) ¿Debo preocuparme también por el acceso simultáneo a un archivo SharedPreferences (no importa qué subproceso tenga acceso primero, solo me preocupan los errores)?

Gracias.

[EDITAR] Cambio propuesto

public boolean insert(ContentValues columnValueMap) throws Exception
    {
        long result = 0;
        synchronized (myDatabase)
        {
            result=myDatabase.insertOrThrow(TABLE_NAME, SMS_TEXT, columnValueMap);

            if(result ==0 || result == -1)
            {
                return false;
            }
            return true;
        }
    }

Respuestas a la pregunta(1)

Su respuesta a la pregunta