a- import java.util.concurrent.locks.Lock;
- import java.util.concurrent.locks.ReentrantLock;
- //死锁演示,出现嵌套锁时会出现互相等待对方释放锁资源现象
- public class DeadLockDemo {
- public static void main(String[] args) {
- final DeadLock dl = new DeadLock();
- new Thread() {
- public void run() {
- while (true)
- dl.show();
- };
- }.start();
- new Thread() {
- public void run() {
- while (true)
- dl.print();
- };
- }.start();
- }
- }
- class DeadLock {
- private Lock lock1 = new ReentrantLock();
- private Lock lock2 = new ReentrantLock();
- public void show() {
- lock1.lock();
- System.out.println(Thread.currentThread().getName()+"..show...lock1.lock();");
- lock2.lock();
- System.out.println(Thread.currentThread().getName()+"..show...lock2.lock();");
- lock2.unlock();
- lock1.unlock();
- }
- public void print() {
- lock2.lock();
- System.out.println(Thread.currentThread().getName()+"..print...lock2.lock();");
- lock1.lock();
- System.out.println(Thread.currentThread().getName()+"..ptint...lock1.lock();");
- lock1.unlock();
- lock2.unlock();
- }
- }
- 运行:
- Thread-0..show...lock1.lock();
- Thread-0..show...lock2.lock();
- Thread-0..show...lock1.lock();
- Thread-1..print...lock2.lock();
复制代码
|
|