接上一篇博客,使用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();
}
}