Release the acquired lock after specific timeout
First you shouldn't make your lock object public if it's for internal working of the class.  Typically they are marked as private. 

The lock statement is just wrapper around the Monitor class.  The Monitor class has a built in timeout.   To use it we need to write a bit more code but less than what you currently have 

private static readonly object _lockObject = new object();

public bool UpdateData()
{
    bool lockWasTaken = false;
    try
    {
        Monitor.TryEnter(_lockObject, TimeSpan.FromSeconds(1), ref lockWasTaken);
        if (lockWasTaken)
        {
            // do work here
        }

    }
    finally
    {
        if (lockWasTaken)
        {
            Monitor.Exit(_lockObject);
        }
    }

    return lockWasTaken;
}


Also if you are going to throw an exception you should make it useful and shouldn't normally use the standard Exception class.  If it's timing out then throw the TimeoutException.  This make it easier for callers to know it timed out and they can decide if they can capture it and retry.