Create a deadlock
Solution
- Create 2 threads, t1 acquires lock1 and waits to acquire lock2
 
- Thread t2 acquires lock2 and waits to acquire lock1
 
Code
def thread2_run()
    lock2.acquire()
    lock1.acquire()
    puts "t2 finished processing"
end
def main()
    task1 = Runnable.new {
        def run()
            lock1.acquire()
            lock2.acquire()
            puts "t1 finished processing"
        end
    }
    task2 = Runnable.new {
        def thread2_run()
            lock2.acquire()
            lock1.acquire()
            puts "t2 finished processing"
        end
    }
    t1 = Thread.new(task1)
    t2 = Thread.new(task2)
    t1.start()
    t2.start()
end