static int number = 0
static object _obj = new object();
static void Thread_1()
{
    for(int i = 0; i < 100000; i++)
    {
        Monitor.Enter(_obj);    // Mutex Lock과 동일
        number++;
        Monitor.Exit(_obj);     // Unlock
    }
}
static void Thread_2()
{
    for(int i = 0; i < 100000; i++)
    {
        Monitor.Enter(_obj);
        number--;
        // 이런 문제가 발생한다. Exit를 해주지 않은 상태에서
        // 누군가 return을 해버린다면 ???
        // 무한대기(데드락)이 발생한다
        return;
        Monitor.Exit(_obj);
    }
}
무한대기(데드락) 문제를 해결해보자
static void Thread_2()
{
    for(int i = 0; i < 100000; i++)
    {
        // lock으로 해결가능
        lock(_obj)
        {
            number--;
        }
    }
}