一个死锁发生的例子--Lock

待我称王封你为后i 2021-09-27 08:28 497阅读 0赞

接上一篇博客,使用Lock实现死锁

  1. import java.util.concurrent.locks.Lock;
  2. import java.util.concurrent.locks.ReentrantLock;
  3. public class DeadlockLock {
  4. private static Lock lock1 = new ReentrantLock();
  5. private static Lock lock2 = new ReentrantLock();
  6. public static void main(String[] args) {
  7. // TODO Auto-generated method stub
  8. Thread thread1 = new Thread(new Runnable() {
  9. @Override
  10. public void run() {
  11. lock1.lock();//获取锁1
  12. System.out.println(Thread.currentThread().getName()+"获取了lock1");
  13. try {
  14. Thread.sleep(500);
  15. }catch (InterruptedException ex){
  16. ex.printStackTrace();
  17. }
  18. lock2.lock();
  19. System.out.println(Thread.currentThread().getName()+"获取了lock2");
  20. lock2.unlock();
  21. lock1.unlock();
  22. }
  23. },"thread1");
  24. Thread thread2 = new Thread(new Runnable() {
  25. @Override
  26. public void run() {
  27. lock2.lock();//获取锁2
  28. System.out.println(Thread.currentThread().getName()+"获取了lock2");
  29. try {
  30. Thread.sleep(500);
  31. }catch (InterruptedException ex){
  32. ex.printStackTrace();
  33. }
  34. lock1.lock();
  35. System.out.println(Thread.currentThread().getName()+"获取了lock1");
  36. lock1.unlock();
  37. lock2.unlock();
  38. }
  39. },"thread2");
  40. thread1.start();
  41. thread2.start();
  42. }
  43. }

发表评论

表情:
评论列表 (有 0 条评论,497人围观)

还没有评论,来说两句吧...

相关阅读

    相关 发生怎么办

    > 锁的定义:死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。竞争的资源可以是:锁、网络连接、

    相关 一个例子

    死锁: 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。 死锁的四个必要条件: