1. 程式人生 > >一個死鎖發生的例子--Lock

一個死鎖發生的例子--Lock

接上一篇部落格,使用Lock實現死鎖

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class DeadlockLock {
    private static Lock lock1 = new ReentrantLock();
    private static Lock lock2 = new ReentrantLock();

    public static void main(String[] args) {
            // TODO Auto-generated method stub
Thread thread1 = new Thread(new Runnable() { @Override public void run() { lock1.lock();//獲取鎖1 System.out.println(Thread.currentThread().getName()+"獲取了lock1"); try { Thread.sleep(500); }catch
(InterruptedException ex){ ex.printStackTrace(); } lock2.lock(); System.out.println(Thread.currentThread().getName()+"獲取了lock2"); lock2.unlock(); lock1.unlock(); } },"thread1"); Thread thread2 = new
Thread(new Runnable() { @Override public void run() { lock2.lock();//獲取鎖2 System.out.println(Thread.currentThread().getName()+"獲取了lock2"); try { Thread.sleep(500); }catch (InterruptedException ex){ ex.printStackTrace(); } lock1.lock(); System.out.println(Thread.currentThread().getName()+"獲取了lock1"); lock1.unlock(); lock2.unlock(); } },"thread2"); thread1.start(); thread2.start(); } }