• java线程(3)-多线程死锁


    产生死锁的条件:

    1.有至少一个资源不能共享
    2.至少有一个任务必须持有一个资源并且等待获取另一个被别的任务持有的资源
    3.资源不能任务抢占
    4.必须有循环等待

    package com.thread;
    /**
    * 死锁简单示例
    * 死锁的原因是由于 两个线程相互等待 对方已被锁定的资源
    * @author YangBaoBao
    *
    */
    public class DeadLock {
    
    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
      Object obj=new Object();
      Object obj1=new Object();
      DeadLockThread diedLock=new DeadLockThread(obj,obj1);
      DeadLockThread1 diedLock1=new DeadLockThread1(obj,obj1);
      diedLock.start();
      diedLock1.start();
    }
    
    }
    class DeadLockThread extends Thread
    {
      private Object obj;
      private Object obj1;
      public DeadLockThread(Object obj,Object obj1)
      {
        this.obj=obj;
        this.obj1=obj1;
        }
      @Override
      public void run() {
        synchronized (obj) {
          try {
            Thread.sleep(100);
            synchronized (obj1) {    
              obj1.getClass();
            }
          } catch (InterruptedException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
          }
        }
      }
    }
    class DeadLockThread1 extends Thread
    {
        private Object obj;
        private Object obj1;
        public DeadLockThread1(Object obj,Object obj1)
        {
            this.obj=obj;
            this.obj1=obj1;
        }
        @Override
        public void run() {
        synchronized (obj1) {
        try {
          Thread.sleep(100);
          synchronized (obj) {    
          obj.getClass();
          }
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
    
       }
      }
    }
  • 相关阅读:
    Django之Orm的各种操作
    python面试题---收藏的笔记
    jQuery中$.each()方法的使用
    Django 之 路由URL,视图,模板
    高级FTP服务器开发
    选课系统
    ATM
    开发一个简单的python计算器
    学习PYTHON之路, DAY 8
    学习PYTHON之路, DAY 7
  • 原文地址:https://www.cnblogs.com/arbitrary/p/5283035.html
Copyright © 2020-2023  润新知